Как я могу отобразить текущее время и дату в данном формате, включая микросекунды в Perl?

Я хочу, чтобы Perl отображал текущую дату и время в следующем формате:

2010-02-11 13:12:34.87876

Я написал этот код:

use Time::localtime;
my $tm = localtime;
printf("It is now %04d-%02d-%02d %02d:%02d:%02d\n", $tm->year+1900,
 ($tm->mon)+1, $tm->mday, $tm->hour, $tm->min, $tm->sec);

и получил:

2011-11-17 17:22:59

Я не знаю, как получить оставшийся .87876 на выходе. Может кто-нибудь, пожалуйста, помогите мне?

3 ответа

use DateTime::HiRes qw();
DateTime::HiRes->now(time_zone => 'local')->strftime('%F %T.%5N')
# returns '2011-11-17 17:42:42.21719'


Используя DateTime и Time::HiRes:

use DateTime;
use Time::HiRes;
my $dt = DateTime->from_epoch(
 epoch => Time::HiRes::time,
 time_zone => 'local',
);
print $dt->strftime("%Y-%m-%d %H:%M:%S.%5N"); # 2011-11-17 21:03:46.74562

Именно так DateTime::HiRes создает объекты DateTime с разрешением второй секунды.


Возможно, вы ищете %5N. См. DateTime:: Format

licensed under cc by-sa 3.0 with attribution.