JavaScript 日期对象英国日期

IT技术 javascript date
2021-03-09 21:29:49

我有以下代码

 datePicker.change(function(){
        dateSet = datePicker.val();
        dateMinimum = dateChange();
        dateSetD = new Date(dateSet);
        dateMinimumD = new Date(dateMinimum);
        if(dateSetD<dateMinimumD){
            datePicker.val(dateMinimum);
            alert('You can not amend down due dates');
        }       
    })

dateSet = "01/07/2010" dateMinimum = "23/7/2010"

两者都是英国格式。比较日期对象时,dateSetD 应该小于 dateMinimumD,但事实并非如此。我认为这与我使用英国日期 dd/mm/yyyy 的事实有关。我需要改变什么才能让它工作?

6个回答

JavaScriptDate构造函数不解析该格式的字符串(无论是英国格式还是美国格式)。有关详细信息,请参阅规范,但您可以部分构建日期:

new Date(year, month, day);

MomentJS可能对灵活处理日期很有用。(这个答案以前链接到这个 lib,但很长时间没有维护。)

这就是我最终这样做的方式:

 var lastRunDateString ='05/04/2012'; \\5th april 2012
 var lastRunDate = new Date(lastRunDateString.split('/')[2], lastRunDateString.split('/')[1] - 1, lastRunDateString.split('/')[0]);

请注意,月份索引是从 0 到 11。

var dateString ='23/06/2015';
var splitDate = dateString.split('/');
var month = splitDate[1] - 1; //Javascript months are 0-11

var date = new Date(splitDate[2], month, splitDate[0]);
  • 使用将日期拆分为日、月、年部分 dateSet.split('/')
  • 按正确的顺序将这些部分传递给Date 构造函数。

是的,您使用的日期格式有问题。如果您没有设置日期格式,则使用的默认日期是'mm/dd/yy. 因此,在创建日期选择器时,您应该在创建时设置首选日期格式,如下所示:

$(".selector" ).datepicker({ dateFormat: 'dd/mm/yyyy' });

或者您可以稍后将其设置为:

$.datepicker.formatDate('dd/mm/yyyy');