9

MomentJS はユーザー入力の解析を目的としていますか?

DDMMYYYY の順序で日付を受け入れ、いくつかのバリエーションを処理することで、簡単なケースに適度に近づきました。

形式を指定するときに無効な日付を特にうまく処理しません-日の値が高すぎる、または年の値を2桁と4桁の間で切り替えるなど。

年解釈の例:

var date1 = moment('30082012', 'DDMMYYYY');
var date2 = moment('30082012', 'DDMMYY'); // Gives wrong year - 2020
var date3 = moment('300812', 'DDMMYYYY'); // Gives wrong year - 1900
var date4 = moment('300812', 'DDMMYY');

無効と思われる日付の例:

var date5 = moment('08302012', 'DDMMYYYY'); // Gives Jun 08 2014
var date6 = moment('08302012', 'DDMMYY'); // Gives Jun 08 2022
var date7 = moment('083012', 'DDMMYYYY'); // Gives Jun 08 1902
var date8 = moment('083012', 'DDMMYY'); // Jun 08 2014

これらの例を使用して JS Fiddle を作成しました: http://jsfiddle.net/cHRfg/2/

ユーザー入力のより広い配列を受け入れ、無効な日付を拒否する方法はありますか? それとも、ライブラリはこれを意図していませんか?

4

2 に答える 2

8

複数の形式の解析を試すことができます。更新されたフィドル:http://jsfiddle.net/timrwood/cHRfg/3/

var formats = ['DDMMYYYY', 'DDMMYY'];
var date1 = moment('30082012', formats);
var date4 = moment('300812', formats);

関連するドキュメントは次のとおりです。http://momentjs.com/docs/#/parsing/string-formats/

moment.fn.isValid例5〜8のように検証を実行できるようにする、追加に関する開発があります。1.7.0リリースで追加されます。https://github.com/timrwood/moment/pull/306

于 2012-05-31T04:43:51.900 に答える