Как я могу отобразить текущую дату и время в заданном формате, включая микросекунды в 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
Я не знаю, как получить оставшиеся 0,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::HiRes
strftime
вDateTime
С помощью 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
объекты с разрешением менее секунды.