【问题标题】:Construct a javascript date from a string without timezone (for JqueryUI datepicker)从没有时区的字符串构造 javascript 日期(用于 JqueryUI datepicker)
【发布时间】:2016-07-21 21:40:56
【问题描述】:

我正在使用 jQueryUI Datepicker 库,我需要为它提供一个为最小日期动态加载的日期。

我设置了我的日期选择器:

$("#thePicker" ).datepicker({
             dateFormat: 'yy-mm-dd',
             showOtherMonths: true,
             changeMonth: true,
             changeYear: true,
             minDate: new Date('2016-04-28'),
        });

其中 '2016-04-28' 是一个在加载时可能会发生变化的字符串。

由于时区转换,这将允许的最短日期设置为 2016 年 4 月 27 日。

当我提供了上面所示格式的字符串以便没有相关时区时,我应该如何为 minDate 构造这个新日期?

【问题讨论】:

    标签: javascript jquery date jquery-ui timezone


    【解决方案1】:

    如果日期是一个字符串并且总是“YYYY-MM-DD”,我会这样做:

    https://fiddle.jshell.net/Twisty/eknxxqvh/

    $(function() {
      var dString = "2016-04-28";
      var yy = parseInt(dString.substring(0, 4));
      var mm = parseInt(dString.substring(5, 7)) - 1;
      var dd = parseInt(dString.substring(8));
      $("#thePicker").datepicker({
        dateFormat: 'yy-mm-dd',
        showOtherMonths: true,
        changeMonth: true,
        changeYear: true,
        minDate: makeDate("2016-04-28"),
        /* Alternate Method 1
        minDate: new Date(yy, mm, dd),
        /* Alternate Method 2
        minDate: new Date(parseInt("2016-04-28".substring(0,4)), parseInt("2016-04-28".substring(5,7))-1, parseInt("2016-04-28".substring(8))),
        */
      });
    
      function makeDate(ds) {
        var yy = parseInt(ds.substring(0, 4));
        var mm = parseInt(ds.substring(5, 7)) - 1;
        var dd = parseInt(ds.substring(8));
        var d = new Date(yy, mm, dd);
        return d;
      }
    });
    

    根据您在页面中使用它的频率,将定义最适合您的方法。

    【讨论】:

    • 啊,太好了,谢谢。在我的常用 javascript 中使用了 makeDate 函数,因为这是围绕应用程序完成的。我猜 Date 采用字符串的构造函数会推断出时区。
    • 是的,它会假设用户是本地时区,当你传递这些小信息时,它可能会做出一些奇怪的假设。
    猜你喜欢
    • 2022-12-09
    • 2013-09-17
    • 2017-09-25
    • 1970-01-01
    • 2011-01-13
    • 2020-01-03
    • 2011-08-18
    • 2021-05-08
    • 1970-01-01
    相关资源
    最近更新 更多