В JavaScript, \ w и \ d являются ASCII, а \ s - Unicode. Не спрашивай меня, почему. JavaScript поддерживает \ p с категориями Unicode, которые вы можете использовать для эмуляции Unicode-совместимых \ w и \ d.
Для \ d use \ p {N} (числа)
Для \ w используйте [\ p {L} \ p {N} \ p {Pc} \ p {M}] (буквы, цифры, символы подчеркивания, метки)
Обновление: К сожалению, я ошибся об этом. JavaScript также официально не поддерживает \ p, хотя некоторые реализации могут поддерживать это. Единственная поддержка Unicode в JavaScript-регулярных выражениях соответствует конкретным кодовым точкам с помощью \ uFFFF. Вы можете использовать их в диапазонах в классах символов.
Как насчет DateTime.NET? (Можно выбрать язык в платформе),
Ruby имеет превосходную поддержку на самом деле. Проверьте эту страницу. Действительно большая поддержка того, чтобы превратить строки в даты, даты в строки, делая математику в даты, анализируя строки "естественного языка" как "3 месяца назад в эту пятницу в 15:45" в фактическую дату, превращая даты в строки, таким образом, можно сделать материал как "Sam, в последний раз зарегистрированный в 4 дня назад" или безотносительно...
Очень изящный.
Я соглашаюсь, что Java SDK имеет ужасную реализацию библиотеки даты и времени. Надо надеяться, JSR 310 решит эту проблему в Java 7. Если бы Вы не можете ждать Java 7, я рекомендовал бы предшественнику JSR-310, Время Joda.
Я соглашаюсь, что реализация Ruby on Rails в ActiveSupport является превосходной реализацией, которая разбирается в основах.
Функция Даты PHP является фантастической и имеет много полезных функций (ссылка: php.net/date)
.NET не плоха в, он - последние выпуски плюс, мне нравится факт, можно добавить ссылку на вторичный язык и смешивание и подгонку код в проекте. Таким образом, Вы могли использовать C# и функции VB в том же классе.
Моим любимым был бы Ruby с ActiveSupport направляющих.
start_time = 5.months_ago.at_end_of_week
end_time = 6.months.since(start_time)
Это поддерживает все функции, которые Вы упомянули выше с подобным DSL (предметно-ориентированный язык)
Я был довольно доволен ГРУШЕВЫМ классом Даты для PHP. Это делает все, о чем Вы спрашиваете, я верю, за исключением нескольких календарей, хотя существует также Date_Human, который мог быть шаблоном для такой вещи.
Кроме того, я еще не работал с ним, но Zend_Date, также для PHP, похож на него, будет работать хорошо на большую часть того, что Вы хотите. Zend_Date имеет преимущество того, чтобы быть основанного на метках времени Unix и том, что объем классов Платформы Зенда предназначается, чтобы быть легким расшириться. Настолько, скорее всего, Вы могли быстро добавить поддержку своих других систем дат путем расширения Zend_Date.
Библиотека DateTime Perl является без сомнения лучшим (как в самом корректном) библиотека для обработки математики даты и времени и часовых поясов. Все остальное неправильно в различных степенях. (и я говорю это записавшее вышеупомянутое сообщение в блоге на библиотеках DateTime/DateTimeZone PHP),
Мне нравится.NET за это. Это обеспечивает хорошее управление Датой/Временем с классами DateTime и Промежутка. Однако большая часть материала даты/времени довольно проста на любом языке, который даст Вам метку времени Unix для работы с.
PHP не является половиной плохо.
// given two timestamps: $t1, and $t2:
// find the number of days between two given dates, number of minutes
// between two given minute periods, etc.
$daysBetween = floor(($t2 - $t1) / 86400); // 86400 = 1 day in seconds
$hoursBetween = floor(($t2 - $t1) / 3600); // 3600 = 1 hour in seconds
// add and subtract intervals from timestamps
$newDate = $t1 + $interval;
// allow simple conversion between timezones, with Daylight Saving Time
// changes by region automatically accounted for (given that there's an
// accurate supporting database of regional settings available)
// See PHP's Calendar functions for that
// http://au2.php.net/manual/en/book.calendar.php
// It not only supports basic stuff like timezones and DST, but also
// different types of calendar: French, Julian, Gregorian and Jewish.
// get the period that a given timestamp falls into, given period
// granularity ("what calendar day is this date in?")
if (date("d", $t1) == 5) // check if the timestamp is the 5th of the month
if (date("h", $t1) == 16) // is it 4:00pm-4:59pm ?
// support very general string-to-date conversions (given a pattern)
// strtotime() is magic for this. you can just type in regular english
// and it figures it out. If your dates are stored in a particular format
// and you want to convert them, you can use strptime()
Необходимо дать ему некоторую престижность за то, что имели функцию для сообщения, какая Пасха даты находится в данном году.
Существует действительно прохладный язык программирования под названием Frink. Это поддерживает в значительной степени каждую единицу, когда-либо изобретенную, каждую физическую постоянную или математическую константу, часовые пояса, bla bla bla …
Это даже имеет веб-интерфейс и Апплет Java.
Некоторые Ваши проблемы выше:
# 2008-12-25 # - now[] -> days
now[] - # 12:00 # -> minutes
# 1979-01-06 # + 1 million minutes
# 2008-08-08 08:08 PM China # -> London
### dd.MM.yyyy ###
# 18.09.2008 #
Frink интегрируется приятно с Java: это может быть встроено в программы Java applications и Frink, может назвать код Java.
Для Java я настоятельно рекомендую библиотеку Joda Date/Time.
Вы ищете что-то как PHPs strtotime? Это даст Вам метку времени Unix почти чего-либо, что можно бросить в нее.
От php сайта:
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
Классы даты.NET требуют, чтобы намного более тайная игра с DateTimeFormatInfo и т.п. проанализировала строки даты, которые не являются почти столь же сложными, как strtotime может обработать.
PHP обеспечивает класс DateTime и класс DateTimeZone с PHP 5, но они оба вполне плохо документируются. Я все еще главным образом использую метки времени Unix и дату, время и функции strtotime, поскольку я не полностью боролся с новыми объектами.
Следующие ссылки пытаются изложить в деталях DateTime и DateTimeZone немного лучше: