2012-04-26 107 views
0

我想比较这种格式的两个日期dd mmm yyyy,比较验证器不会工作,因为格式和自定义验证器是服务器端验证。我想有一个clinet方面的验证。什么是最好的方法来做到这一点?如果你有任何例子或链接,请让我知道。如何比较格式为dd mmm yyyy的两个日期?

我不知道是否有可用的选项可用ajax,jquery或JavaScript可以做到这一点?

干杯

+0

您是否尝试过用正则表达式?这里有一个庞大的正则表达式库 - > http://regexlib.com/ – Soader03 2012-04-26 14:54:37

回答

1

由于JavaScript的原生从MMM dd, yyyy转换,这将是一个方法:

var date1Str = "09 Sep 2011"; 
var date2Str = "04 May 2012"; 

var dateParts = date1Str.split(" "); 
var newDateStr = dateParts[1] + " " + dateParts[0] + ", " + dateParts[2]; 
var date1 = new Date(newDateStr); 

var dateParts = date2Str.split(" "); 
var newDateStr = dateParts[1] + " " + dateParts[0] + ", " + dateParts[2]; 
var date2 = new Date(newDateStr); 

if (date1 > date2) 
    ... 

有在网上吨的链接做的日期解析JavaScript和大量的库,使得它更轻松。请记住,文化是其中的一部分。 “Oct”是英文的,但在德语中是“Okt”。

0

下面是一个简单的类,可以用来比较日期;该convert功能进行了调整,以适应您的格式:

<script type="text/javascript"> 
    var dates = { 
     convert:function(d) { 
      return (
       d.constructor === Date ? d : 
       d.constructor === Array ? new Date(d[1],d[0],d[2]) : 
       d.constructor === Number ? new Date(d) : 
       d.constructor === String ? new Date(d) : 
       typeof d === "object" ? new Date(d.year,d.month,d.date) : 
       NaN 
      ); 
     }, 
     compare:function(a,b) { 
      return (
       isFinite(a=this.convert(a).valueOf()) && 
       isFinite(b=this.convert(b).valueOf()) ? 
       (a>b)-(a<b) : 
       NaN 
      ); 
     }, 
     inRange:function(d,start,end) { 
      return (
       isFinite(d=this.convert(d).valueOf()) && 
       isFinite(start=this.convert(start).valueOf()) && 
       isFinite(end=this.convert(end).valueOf()) ? 
       start <= d && d <= end : 
       NaN 
      ); 
     } 
    } 
</script> 

信用该类属于@some:https://stackoverflow.com/a/497790/879420

相关问题