【问题标题】:Javascript date - Specify incoming date format (jQuery UI DateTimepicker)Javascript 日期 - 指定传入日期格式 (jQuery UI DateTimepicker)
【发布时间】:2012-08-06 15:22:52
【问题描述】:

我正在为 jQuery UI datepicker 使用自定义插件 - Timepicker

我有两个字段,fromto输入字段,需要检查to是否“大于”from。我有我的自定义 onClose 函数 (onClose: function(dateText, inst) {}),但第一个参数是输入值 - 日期字符串。但是我的日期字符串不是“有效”的 JS 日期时间格式,所以我无法获取 Date 对象实例并进行比较。

它是 dd.mm.yyyy hh:mm,例如06.08.2012 12:00

不知道有没有什么方法可以指定输入字符串的格式,例如:

var date = new Date('dd.mm.yyyy hh:mm', dateText);

如果不是,我会让你以某种方式解析它......

提前感谢您的帮助。

【问题讨论】:

    标签: javascript jquery jquery-ui datepicker date-format


    【解决方案1】:

    JavaScript 中没有内置这样的实用程序。如果我是你,我会将日期格式与正则表达式匹配并使用 the form of the Date constructor which accepts date parts:

    function parseDate(str) {
      var m = str.match(/^(\d\d)\.(\d\d)\.(\d{4}) (\d\d):(\d\d)$/);
      return (m) ? new Date(m[3], m[2]-1, m[1], m[4], m[5]) : null;
    }
    

    请注意,月份部分是从零开始的(而不是从一开始,所以一月=0,因此是 minux )。另外,请注意Number constructor 用于将字符串转换为数字,因此您不必担心可能以零为前缀的数字会被解释为八进制,就像parseInt(...) 可能发生的那样。

    【讨论】:

    • 变量 m 对我来说始终为空...我不知道为什么。我已经用 Firefox 的正则表达式测试器对其进行了测试
    • 非常仔细地检查输入字符串。它是否有任何额外的空白(之前?之后?中间)?
    • 我在那里检查过:regular-expressions.info/javascriptexample.html - 没关系。然后我尝试了 if(!new RegExp(/^(\d\d)\.(\d\d)\.(\d{4})\s(\d\d):(\d\d) $/).test(str)) 在我的本地主机上并得到错误,即 str 无效。周围没有空白,可能是中间那个……
    • 我已经尝试过这种方法。但仍然为空...........var regex = '/^(\d\d)\.(\d\d)\.(\d{4}) (\d\d): (\d\d)$/'; var re = 新的正则表达式(正则表达式); var m = re.exec($.trim(str));
    • 我刚刚将此函数从我的模板文件移动到 .js 文件并包含在 中,它正在工作:) 非常感谢您的帮助。
    猜你喜欢
    • 2018-03-29
    • 2011-12-02
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多