-1

私はこのスクリプトを使用しています: http://jdpicker.paulds.fr/?p=doc これは素晴らしい日付ピッカーですが、もちろん、その人は形式の 1 つとして「mm/dd/YYYY」を追加しませんでした。

彼は、「71行目と109行目の間にあるスイッチを編集することで、いくつかの新しいオプションを変更または追加できます。必要なのは、いくつかの正規表現といくつかの脳細胞を使用するだけです!」と主張しています。-まあ、私は正規表現が得意ではなく、これを正しく機能させることができません。

私のコード:

case "mm/dd/YYYY": 
this.reg = new RegExp(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/); 
this.date_decode = "new Date(parseInt(matches[2]-1), matches[3], matches[1]);"; 
this.date_encode = 'this.strpad(date.getMonth()+1) + "/" + this.strpad(date.getDate()) + "/" + date.getFullYear();';
this.date_encode_s = 'this.strpad(date.getMonth()+1) + "/" + this.strpad(date.getDate())';
break;

これは、有効な YYYY/mm/dd 形式の例です。

case "YYYY/mm/dd": 
default: 
this.reg = new RegExp(/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/); 
this.date_decode = "new Date(matches[1], parseInt(matches[2]-1), matches[3]);"; 
this.date_encode = 'date.getFullYear() + "/" + this.strpad(date.getMonth()+1) + "/" + this.strpad(date.getDate());'; 
this.date_encode_s = 'this.strpad(date.getMonth()+1) + "/" + this.strpad(date.getDate());'; 
break;

この後モデリングしてもうまくいきませんでした。日付を適切にフォーマットしますが、何らかの理由でカレンダーを 2038 年に変更してしまいます。どんな助けでも素晴らしいでしょう!

4

3 に答える 3

2

この行を変更する必要があると思います:

this.date_decode = "new Date(parseInt(matches[2]-1), matches[3], matches[1]);";

これに:

this.date_decode = "new Date(matches[3], parseInt(matches[1]-1), matches[2]);";
于 2012-11-19T16:34:35.330 に答える
0

に加えて02/29、年からのすべての日付は2000正規表現パターンで検証できます

(?:02\/(?:(?!00)[01]\d|2[0-8])|(?:0[469]|11)\/(?:(?!00)[0-2]\d|30)|(?:0[13578]|10|12)\/(?:(?!00)[0-2]\d|3[01]))\/2\d{3}
于 2012-11-19T16:42:21.800 に答える
0

本物のプログラマーのように見せるには、正規表現を次のように変更します

this.reg = new RegExp(@"^\d{4}/(\d|1[0-2])/(\d|(1[\d])|(2[\d])|3[0-1])$");
于 2012-11-19T16:45:40.460 に答える