【问题标题】:JavaScript date objects UK datesJavaScript 日期对象英国日期
【发布时间】:2010-06-25 10:30:03
【问题描述】:

我有以下代码

 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 的事实有关。我需要进行哪些更改才能使其正常工作?

【问题讨论】:

  • 英国日期是“dd/MM/yyyy”而不是“mm/dd/yyyy”。
  • 曾经是那些日子之一。更新的问题。

标签: javascript date


【解决方案1】:

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

new Date(year, month, day);

MomentJS 可能有助于灵活处理日期。 (这个答案之前链接到this lib,但是很久没维护了。)

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:
      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]);
      

      【讨论】:

        【解决方案4】:
        • 使用dateSet.split('/') 将日期拆分为日、月、年部分
        • 将这些部件按正确的顺序传递给Date constructor.

        【讨论】:

          【解决方案5】:

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

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

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

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

          【讨论】:

            【解决方案6】:

            当您尝试创建日期对象时:

            new Date(year, month, day, hours, minutes, seconds, milliseconds)
            

            例子:

            dateSetD = new Date(dateSet.year, dateSet.month, dateSet.day);
            

            注意:JavaScript Date 对象的月份从 00 开始,因此您需要相应地调整您的日期集。

            【讨论】:

            • JavaScript 没有 Python 风格的关键字参数。您在示例中所做的是将dateSet.year 分配给意外的全局变量year
            猜你喜欢
            • 1970-01-01
            • 2012-03-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-12-03
            • 1970-01-01
            相关资源
            最近更新 更多