2

日時が有効なRFC3339であることを検証する方法はありますか? 私はそれをUNIX時間に変換してから有効なRFC3339としてフォーマットできることを知っていますが、そうすることを望まず、代わりに正しいフォーマットが提供されるように強制します。  http://mattallan.org/posts/rfc3339-date-time-validation/ は正規表現の使用を提案していますが、最後の手段としてのみ行います。ありがとう

4

2 に答える 2

4

DateTime定義済みのDaTeTime::RFC3339フォーマット定数があります。指定された形式に従って日付を解析できない場合にcreateFromFormat返されるため、そのチェックをバリデーターとして使用できます。false

validRFC3339Date("2018-01-29T20:36:01Z");
validRFC3339Date("2018-01-29T20:36:01+00:00");

validRFC3339Date("2018-01-22 20:36");
validRFC3339Date("2018-09-28T16:00:05.000Z");

function validRFC3339Date($date) {
    if (DateTime::createFromFormat(DateTime::RFC3339, $date) === FALSE) {
        echo "$date: Invalid RFC3339\n";
    } else {
        echo "$date: Valid RFC3339\n";
    }
}
于 2018-10-14T21:16:47.053 に答える