4

Perl には strftime があり、書式設定オブジェクトを渡すことができます。私が見つけることができるかどうか疑問に思っている機能は、次のようなものです(PHPから):

$string1 = "Jun 6, 2012";
$string2 = "June 06 2012";
if (strtotime($string1) == strtotime($string2)) {
  echo "BLAMMO!";
}
// will echo "BLAMMO!"

この理由は、ユーザーが指定した日付を検証および拡張ロジックのために比較する必要があるビジネス ニーズです (この日付は、指定された別の日付範囲内にあるかどうかなど)。今、私はこれを行う専用のライブラリ全体を作成できることに気付きました。また、日付の解析には潜在的な落とし穴がいくつもあり、ユーザーの入力を決して信用してはならないことに気付きましたが、ここにいくつかの基本的な仮定があります。

  1. 入力は実際には、日付フォーマットに関する独自の内部仕様に準拠する任意の数のソフトウェア パッケージから出力されます。それらはすべて何らかの標準に従っていますが、これらの標準はプログラム間で一様に正規化されているわけではありません。そうは言っても、私は常に同じプログラムの 2 つの日付を比較する必要がありますが、それらがどの形式に従うかはわかりません。
  2. 特定のシステムの標準が異なる可能性が高いことは理解していますが、ここでの前提は、すべての日付を同じものにフィードしているため、一貫した実装、できれば CPAN または別の簡単に更新されるモジュールの何かを信頼できることです。 .
4

3 に答える 3

13

Date::Parsestr2time、これを行います。

ドキュメントには、モジュールが解析できるいくつかの例がリストされています。

 1995:01:24T09:08:17.1823213           ISO-8601
 1995-01-24T09:08:17.1823213
 Wed, 16 Jun 94 07:29:35 CST           Comma and day name are optional 
 Thu, 13 Oct 94 10:13:13 -0700
 Wed, 9 Nov 1994 09:50:32 -0500 (EST)  Text in ()'s will be ignored.
 21 dec 17:05                          Will be parsed in the current time zone
 21-dec 17:05
 21/dec 17:05
 21/dec/93 17:05
 1999 10:02:18 "GMT"
 16 Nov 94 22:28:20 PST 
于 2012-12-03T18:53:37.093 に答える
5

Perl での日付/時刻操作の標準は、DateTime プロジェクトです。

https://metacpan.org/pod/DateTime

于 2012-12-03T18:54:28.697 に答える
1

strptimefor Perl は、コア モジュールTime::Pieceで取得できます。これはコア モジュール ソリューションを提供しますが、リッチDateTimeモジュールは残念ながらコア Perl の一部ではありません。

于 2012-12-03T22:20:40.563 に答える