我需要以"20130808 12:12:12.123"
格式获取时间,即"yyyymmdd hour:min:sec.msec"
。
我试过
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
$mon++;
if ($mon<10){$mon="0$mon"}
if ($mday<10){$mday="0$mday"}
if ($hour<10){$hour="0$hour"}
if ($min<10){$min="0$min"}
if ($sec<10){$sec="0$sec"} but this doesn't provide the `msec` as a part of time.
我该怎么做?
答案 0 :(得分:23)
这是一个完整的脚本。如前所述,它使用Time::HiRes::time
进行微秒支持,并且还使用POSIX::strftime
来简化格式化。不幸的是strftime
无法处理微秒,因此必须手动添加。
use Time::HiRes qw(time);
use POSIX qw(strftime);
my $t = time;
my $date = strftime "%Y%m%d %H:%M:%S", localtime $t;
$date .= sprintf ".%03d", ($t-int($t))*1000; # without rounding
print $date, "\n";
答案 1 :(得分:10)
简要地看一下,它可以提供自epoch公平的毫秒 很容易,但似乎没有扩展localtime(),所以可能有一些工作 参与在完整的日历环境中使用它。
这是一个有效的例子:
use strict;
use warnings;
use Time::Format qw/%time/;
use Time::HiRes qw/gettimeofday/;
my $time = gettimeofday; # Returns ssssssssss.uuuuuu in scalar context
print qq|$time{'yyyymmdd hh:mm:ss.mmm', $time}\n|;