Даты

Что меня в последнее время стало несколько раздражать, так это отсутствие единого стандарта по работе с датами и временем в Perl.
Вроде бы и классно, что гибко, да поди ж ты угадай, что тебе вернет $client->birthday:) Это может быть и строка или же Class::Date(кстати, неплохой, мне очень нравится), Date::Simple, Date::Tiny... [впишите здесь свой любимый модуль]. Интерфейсы у каждого свои, методы работы - свои, проблемы - наши:)

Как по мне..

...самый мощный и удобный - это Date::Manip. Всегда находил там все, что надо. На сколько знаю, многое на его основе написано.

Date::Calc

Не знаю, как так получалось, но в жизни кроме

Date::Calc::Days_in_Month()
Date::Calc::Day_of_Week()

ничего использовать не приходилось :)

Что вернет $client->birthday - надо строжайше знать :)

DateTime

Может я чего пропустил в перловом мире, но имхо стандарт есть и это DateTime.

http://datetime.perl.org/?Modules

расширений достаточно. посчитать можно "черта лысого", отформатить как угодно, свои парсеры и форматтеры строятся легко и непринужденно.

Date::Calc - XS модуль если я не ошибаюсь. Имхо главный недостаток - везде работа со списками, а не с обьектом типа Дата. Хоть местами это удобно. Ну и XS - в данном случае излишен.

Date::Manip не получает таймзоны из %ENV на виндовых машинах - в результате безбожно глючит, а то и рушится. Последний опыт правда был пару лет назад.

Воторой недостаток - все в одном флаконе - модуль получился огромными с болшими временными потерями на парсинг в чистом CGI. Фигли мучать так парсер перла ради вывести отформатированную дату? DateTime разбит на модули и грузишь только то что надо.

А я никогда не

А я никогда не озадачивался, брал и использовал список, возвращаемый localtime или даже прямо работал с unixtime (32-битовое число, количество секунд с 1-го января 1970 года), которое возвращает стандартная функция time .
- Для календаря ничего лучше unixtime даже придумать нельзя - оно всегда UTC и редко в жизни требуется точность лучше секунды, также вполне употребимо для рассчета таймаутов в большинстве случаев (впрочем, доли секунды это уже не функция календаря).
Кстати, я реально не понимаю, какой смысл изобретать для дат что-то кроме unixtime, в смысле внутри программы использовать unixtime, а выводить на печать уже можно форматировать.

Да, иметь под рукой UNIX полезно еще и тем что можно при необходимости выдрать из локалей названия месяцев и дней недели на огромном количестве языков. Вобщем я когда последний раз это делал - где-то за минут 15 (быстрее чем слить с CPAN) слепил функцию, выводящую отформатированную дату.

А, еще есть "хакерский" путь - мне как-то лень было разбираться с датами, и я взял и заполучил отформатированную дату от mysql :)
Что-то вроде "select now(); "

однозначно unixtime рулит

оно и в SQL лучше вставляется и вывод с него же отформатировать как угодно можно