我希望得到這個時間戳格式:如何在Perl中格式化時間戳?
01/13/2010 20:42:03 - -
它總是2個位數除了一年,它是4個位數。它基於24小時制。
我該如何在Perl中做到這一點?我更喜歡本地功能。
我希望得到這個時間戳格式:如何在Perl中格式化時間戳?
01/13/2010 20:42:03 - -
它總是2個位數除了一年,它是4個位數。它基於24小時制。
我該如何在Perl中做到這一點?我更喜歡本地功能。
$ perl -MPOSIX -we 'print POSIX::strftime("%m/%d/%Y %H:%M:%S\n", localtime)' 01/27/2010 14:02:34
你也許會寫類似:
my ($sec, $min, $hr, $day, $mon, $year) = localtime;
printf("%02d/%02d/%04d %02d:%02d:%02d\n",
$day, $mon + 1, 1900 + $year, $hr, $min, $sec);
爲避免POSIX的一種手段。別!據我所知,POSIX.pm
已經在覈心自1996年以來1997年或
從這個問題中明確的'01/13/2010'來看,Brian似乎想要一種格式爲「%m /%d/...'或者甚至''%D%T「' – 2010-01-27 19:10:19
@gbacon'%D%T'不能在'perl' 5.10.1在Windows上運行(它在Linux上),所以我決定安全地玩。交換'%m'和'%d' – 2010-01-27 19:14:33
唉!好,趕緊記住 – 2010-01-27 19:21:08
這是我使用的子程序。它可以讓你得到你喜歡的任何格式的日期時間戳。
#! /usr/bin/perl
use strict;
use warnings;
use POSIX;
use POSIX qw(strftime);
sub getTime
{
my $format = $_[0] || '%Y%m%d %I:%M:%S %p'; #default format: 20160801 10:48:03 AM
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
return strftime($format, $sec, $min, $hour, $wday, $mon, $year, $mday);
}
# Usage examples
print getTime()."\n"; #20160801 10:48:03 AM
print getTime('%I:%M:%S %p')."\n"; #10:48:03 AM
print getTime('%A, %B %d, %Y')."\n"; #Monday, August 01, 2016
print getTime('%Y%m%d %H:%M:%S')."\n"; #20160801 10:48:03
雖然我理解你對本地/核心模塊的偏好,但DateTime和一些相關的格式化程序絕對值得你進入你的工具包。 http://search.cpan.org/dist/DateTime/ – daotoad 2010-01-28 15:22:01