私は(日付 - 時刻)形式の文字列を "Mon、11 Jul 2011 11:45:07 +08:00"としていますが、このような文字列を日時形式に基づいて比較する必要があります。 。私はここでどのモジュール/メソッドを使うべきですか?perlとphpの日付と時刻に基づいて2つの文字列を比較するには?
2
A
答えて
4
use DateTime::Format::Strptime qw();
my $time_str = 'Mon, 11 Jul 2011 11:45:07 +08:00';
# your notation of time zone
# does not comply with relevant standards
$time_str =~ s/([+-]\d\d):(\d\d) \z/$1$2/msx; # kill colon
my $parser = DateTime::Format::Strptime->new(
pattern => '%a, %d %b %Y %T %z',
locale => 'en', # 'Mon', 'Jul' are English
on_error => 'croak',
);
my $datetime = $parser->parse_datetime($time_str);
# Now you have a DateTime object. To compare,
# use the overloaded relation operators.
# <=> operator/sort function works as well.
if ($datetime < $a_different_datetime) {
say 'earlier';
}
1
PHPの場合、最も簡単な方法は、strtotime()で時間文字列を変換し、整数値を比較することです。最も高い整数が最新です。
デフォルトのタイムゾーンを設定していない場合、PHPのバージョンによってはDate関数を使用する際に警告が表示されることに注意してください。 またはphp.iniのdate.timezone = ""
で、list of supported timezonesとすることができます。
0
はPHPでそれが
0
strtotime()と呼ばれていますあなたが持っているタイムスタンプ上のstrtotime()を試すことができます。通常のコンパレータを使って数値を比較するだけです。
1
私はこのためにPerlでDate::Manipを使用します。
use Date::Manip;
my $datestr1 = "Mon, 11 Jul 2011 11:45:07 +08:00";
my $datestr2 = "Mon, 18 Jul 2011 11:45:07 +08:00";
my $date1 = new Date::Manip::Date;
my $date2 = $date1->new_date;
$date1->parse($datestr1);
$date2->parse($datestr2);
my $result = $date1->cmp($date2); # => -1, 0, 1
print $result, "\n";
関連する問題
- 1. 日付と時刻とperlでの時刻を比較する
- 2. 日付+時刻と現在の日付と時刻を比較するには?
- 3. 2つの日付コントロールと時刻コントロールを比較する
- 4. PHP - 2つの異なる日付時刻を比較するには?
- 5. 日付と時刻を比較する
- 6. Groovy - 日付と時刻の比較
- 7. Javaは2つの日付と時刻を取得して比較します
- 8. PHPの日付と文字列を比較する方法
- 9. 日付を文字列の文字列として比較
- 10. java日付時刻比較2
- 11. 比較日付時刻
- 12. 2つの日付文字列を比較する方法
- 13. PHPとMySQL - 日付と時刻に基づいてフォームを表示
- 14. 最小(日付)と文字列の比較に基づいて選択したレコードを取得するsqlクエリ
- 15. SQLの時刻と現在の日付と時刻をTSで比較する
- 16. javascriptで2つの文字列の日付を比較するには?
- 17. 私は日付と時刻の両方を送信するフォームを持っている、と私はこれらの値に基づいて、1つの\ DateTimeオブジェクトを作成したい日付の文字列と時刻の文字列
- 18. Swift 3で2つの文字列(日付と時刻)を新しい日付に結合する方法
- 19. MVCの文字列と時刻との比較<= > =
- 20. 文字列をjavaの日付と時刻に変換する
- 21. 火花の日付列に基づいて2つのデータフレームとフィルタ結果を比較
- 22. PHP:2つのキーの値に基づいて現在の時間と時間範囲を比較するループスルー
- 23. 特定の日付と日付を比較してTwigの文字列に
- 24. 文字列から2つの日付と時刻を抽出する
- 25. 日付時刻文字列
- 26. プロパティ文字列名に基づくefとの動的比較
- 27. PHPは文字列を日付時刻に変換します
- 28. キーと文字列に基づいて2つのファイルを比較する方法+ awk
- 29. C++は文字列の日付と比較する
- 30. moment.js日付/時刻の比較
-1投機的な答えを。警告メッセージで5.3.5の爆弾を試す 'システムのタイムゾーン設定に頼るのは安全ではない。 [...] 'などです。表示されないタイムゾーン解析を処理するために必要なコードが増えています。私はこれが実際にはPHPの標準ライブラリでカバーされているとは思わない。 – daxim
この警告は、日付変換にデフォルトのタイムゾーン設定を使用していることを説明するだけです。これはタイムゾーンが明示的に文字列に与えられているので、問題の変換にはほとんど関係ありません。システムのタイムゾーンが入力として与えられると、どうして問題になるのですか?私はあなたの前でPHP 5.3.5を尋ねなければならないと思います。私のPHPは、適切なPHPインストールのように、設定の一部として設定されている可能性があります。私の答えには、PHPのインストールを実際に設定することを前提としている点を除いて、何も投機的ではありません。 – Naltharial
申し訳ありませんが、それは私の批判を無効にします。私の投票を変更できるようにあなたの答えを編集してください。おそらくコードサンプルを追加し、結合モードを変更するでしょうか? – daxim