2012-08-24 107 views
2

this answer開始,我使用DateTime::Format::Strptime從字符串中獲取日期。使用DateTime :: Format :: Strptime將字符串轉換爲日期

我使用的下列模式是:%m%d%Y%n%T。這should be matching

  • %m:月份數(01-12)。這也將解析單個數字的數字。
  • %d:月份的一天(01-31)。這也將解析單個數字的數字。
  • %Y:今年,包括世紀(例如,1991年)。
  • %n:任意空白。
  • %T:相當於%H:%M:%S
    • %H:時間(00-23)。這也將解析單個數字的數字。
    • %M:分鐘(00-59)。這也將解析單個數字的數字。
    • %S:第二個(0-60; 60可能發生閏秒,見DateTime::LeapSecond)。

然而,輸入:05/18/2011 14:14:05]它的失敗與錯誤:

Your datetime does not match your pattern

據我所看到的,我的模式輸入模式相匹配。我哪裏錯了?

相關代碼如下:


use DateTime::Format::Strptime qw(); 

my $format = DateTime::Format::Strptime->new(
    pattern => '%m%d%Y%n%T', 
    time_zone => 'local', 
    on_error => 'croak', 
); 

my $dt = $fields->[1] ; 
print "Date:[$dt]\n"; 
my $dateopen = $format->parse_datetime($dt); 

輸出:

Date:[05/18/2011 14:14:05]
Your datetime does not match your pattern

回答

5

非圖案字符是重要的。你的日期組件之間有斜槓,因此'%m/%d/%Y%n%T'的模式工作,而你的日期組件不工作。

請注意,%D模式不起作用,因爲它是%m%d%Y的快捷方式,不包括斜線。

相關問題