3

日時形式yyyy-mm-ddhh:mm:ss(文字列の可能性があります)をUTCに変換し、DateTimeを調べますが、文字列を解析する方法がわかりませんか?

アップデート:

これは正しく機能していますか?

require 5.002;

use strict;
use warnings;

use DateTime::Format::DateManip;

my $string = '2010-02-28 00:00:00';

my @dates = (
    $string
);

for my $date ( @dates ) {
    my $dt = DateTime::Format::DateManip->parse_datetime( $date );
    die "Cannot parse date $date, Please use a valid date in this format 'yyyy-mm-dd mm:hh:ss'"  unless defined $dt;
    print $dt."\n";
    $dt->set_time_zone( 'UTC' );
    print $dt."Z\n"; # Is this correct???
}
4

3 に答える 3

3
use DateTime::Format::ISO8601;
my $dt = DateTime::Format::ISO8601->parse_datetime('yyyy-mm-ddThh:mm:ss');

DateTime :: Format :: ISO8601モジュールを使用して、その形式を解析し、 DateTimeオブジェクトを返します。

于 2010-01-20T20:33:44.240 に答える
2

このSOの質問を見てください。Perlで日付を検証するにはどうすればよいですか?1つの答えのために。

CPANにはいくつかの素晴らしいDateTimeヘルパーモジュールもあります。たとえば。これにより、次のようなDateTimeオブジェクトを作成できます。DateTimeX::Easy

use DateTimeX::Easy;

my $a_date    = DateTimeX::Easy->new( '11/17/2008 12:01am' );

my $tomorrow  = DateTimeX::Easy->new( 'tomorrow' );

my $last_week = DateTimeX::Easy->new( 'last week' );

/ I3az /

于 2010-01-20T20:30:27.573 に答える
2

DateTime :: Format::*モジュールに解析メソッドの1つが必要です。

文字列はISO8601形式(「yyyy-mm-ddThh:mm:ss」)のようには見えませんが、MySQLの形式スタイルと一致しています。

use DateTime::Format::MySQL;
my $dt = DateTime::Format::MySQL->parse_datetime('2010-02-28 00:00:00');

print $dt->strftime("%Y %M %d %T");

生成:

2010 00 28 00:00:00

于 2010-01-20T20:39:22.993 に答える