我想比較這種格式的兩個日期dd mmm yyyy,比較驗證器不會工作,因爲格式和自定義驗證器是服務器端驗證。我想有一個clinet方面的驗證。什麼是最好的方法來做到這一點?如果你有任何例子或鏈接,請讓我知道。如何比較格式爲dd mmm yyyy的兩個日期?
我不知道是否有可用的選項可用ajax,jquery或JavaScript可以做到這一點?
乾杯
我想比較這種格式的兩個日期dd mmm yyyy,比較驗證器不會工作,因爲格式和自定義驗證器是服務器端驗證。我想有一個clinet方面的驗證。什麼是最好的方法來做到這一點?如果你有任何例子或鏈接,請讓我知道。如何比較格式爲dd mmm yyyy的兩個日期?
我不知道是否有可用的選項可用ajax,jquery或JavaScript可以做到這一點?
乾杯
由於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」。
下面是一個簡單的類,可以用來比較日期;該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
您是否嘗試過用正則表達式?這裏有一個龐大的正則表達式庫 - > http://regexlib.com/ – Soader03 2012-04-26 14:54:37