Что языки действительно датируют, время и календарные операции действительно хорошо? [закрытый]

В 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. Вы можете использовать их в диапазонах в классах символов.

9
задан Motti 6 May 2009 в 20:31
поделиться

14 ответов

Как насчет DateTime.NET? (Можно выбрать язык в платформе),

7
ответ дан 4 December 2019 в 07:05
поделиться

Ruby имеет превосходную поддержку на самом деле. Проверьте эту страницу. Действительно большая поддержка того, чтобы превратить строки в даты, даты в строки, делая математику в даты, анализируя строки "естественного языка" как "3 месяца назад в эту пятницу в 15:45" в фактическую дату, превращая даты в строки, таким образом, можно сделать материал как "Sam, в последний раз зарегистрированный в 4 дня назад" или безотносительно...

Очень изящный.

0
ответ дан 4 December 2019 в 07:05
поделиться

Я соглашаюсь, что Java SDK имеет ужасную реализацию библиотеки даты и времени. Надо надеяться, JSR 310 решит эту проблему в Java 7. Если бы Вы не можете ждать Java 7, я рекомендовал бы предшественнику JSR-310, Время Joda.

Я соглашаюсь, что реализация Ruby on Rails в ActiveSupport является превосходной реализацией, которая разбирается в основах.

1
ответ дан 4 December 2019 в 07:05
поделиться

Функция Даты PHP является фантастической и имеет много полезных функций (ссылка: php.net/date)

.NET не плоха в, он - последние выпуски плюс, мне нравится факт, можно добавить ссылку на вторичный язык и смешивание и подгонку код в проекте. Таким образом, Вы могли использовать C# и функции VB в том же классе.

1
ответ дан 4 December 2019 в 07:05
поделиться

Моим любимым был бы Ruby с ActiveSupport направляющих.

start_time = 5.months_ago.at_end_of_week 
end_time =  6.months.since(start_time)

Это поддерживает все функции, которые Вы упомянули выше с подобным DSL (предметно-ориентированный язык)

1
ответ дан 4 December 2019 в 07:05
поделиться

Я был довольно доволен ГРУШЕВЫМ классом Даты для PHP. Это делает все, о чем Вы спрашиваете, я верю, за исключением нескольких календарей, хотя существует также Date_Human, который мог быть шаблоном для такой вещи.

Кроме того, я еще не работал с ним, но Zend_Date, также для PHP, похож на него, будет работать хорошо на большую часть того, что Вы хотите. Zend_Date имеет преимущество того, чтобы быть основанного на метках времени Unix и том, что объем классов Платформы Зенда предназначается, чтобы быть легким расшириться. Настолько, скорее всего, Вы могли быстро добавить поддержку своих других систем дат путем расширения Zend_Date.

1
ответ дан 4 December 2019 в 07:05
поделиться

Библиотека DateTime Perl является без сомнения лучшим (как в самом корректном) библиотека для обработки математики даты и времени и часовых поясов. Все остальное неправильно в различных степенях. (и я говорю это записавшее вышеупомянутое сообщение в блоге на библиотеках DateTime/DateTimeZone PHP),

1
ответ дан 4 December 2019 в 07:05
поделиться

Мне нравится.NET за это. Это обеспечивает хорошее управление Датой/Временем с классами DateTime и Промежутка. Однако большая часть материала даты/времени довольно проста на любом языке, который даст Вам метку времени Unix для работы с.

2
ответ дан 4 December 2019 в 07:05
поделиться

Вы могли бы хотеть проверить Дату:: модуль Perl Manip на CPAN.

3
ответ дан 4 December 2019 в 07:05
поделиться

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()

Необходимо дать ему некоторую престижность за то, что имели функцию для сообщения, какая Пасха даты находится в данном году.

2
ответ дан 4 December 2019 в 07:05
поделиться

Существует действительно прохладный язык программирования под названием 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
  • поддерживайте очень общие строковые до настоящего времени преобразования (учитывая шаблон)
    1. Определите новый формат даты: ### dd.MM.yyyy ###
    2. Синтаксический анализ: # 18.09.2008 #

Frink интегрируется приятно с Java: это может быть встроено в программы Java applications и Frink, может назвать код Java.

3
ответ дан 4 December 2019 в 07:05
поделиться

Для Java я настоятельно рекомендую библиотеку Joda Date/Time.

3
ответ дан 4 December 2019 в 07:05
поделиться

Для C++ существует Повышение. Date_Time.

2
ответ дан 4 December 2019 в 07:05
поделиться

Вы ищете что-то как 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 немного лучше:

4
ответ дан 4 December 2019 в 07:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: