-1

我正在使用这个脚本: http: //jdpicker.paulds.fr/ ?p= doc 这是一个很棒的日期选择器,但当然,这家伙没有添加“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 回答