如何比较dd mmm yyyy格式的两个日期?

时间:2012-04-26 14:53:09

标签: asp.net vb.net validation date

我想比较这种格式的两个日期dd mmm yyyy,比较验证器因格式而无法工作,自定义验证器是服务器端验证。我想要一个clinet方验证。最好的方法是什么?如果您有任何示例或链接,请告诉我。

我不知道是否有可用的ajax,jquery或javascript选项?

干杯

2 个答案:

答案 0 :(得分: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”。

答案 1 :(得分: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