【问题标题】:strptime in JavascriptJavascript中的strptime
【发布时间】:2010-10-03 15:49:26
【问题描述】:

我有一个允许用户输入日期的日期输入字段,我需要验证这个输入(我已经有服务器端验证),但诀窍是格式取决于区域设置。我已经有一个系统可以将 strptime 格式字符串转换为用户的偏好,我想使用相同的格式在 Javascript 端进行验证。

有任何想法或链接到 Javascript 中的 strptime() 实现吗?

【问题讨论】:

    标签: javascript strptime phpjs


    【解决方案1】:

    我刚刚添加了 strptime() 的 php.js 实现;我已经对其进行了一些测试,但它需要进一步的单元测试。无论如何,请随意试一试;它应该涵盖 PHP 所做的一切(除了尚不支持未记录的 %E...(替代语言环境格式)说明符)。

    注意,这也取决于我们对 setlocale() 和 array_map() 的实现...

    【讨论】:

      【解决方案2】:

      经过几天的谷歌搜索,我找到了this implementation,虽然不完整,但似乎可以处理我现在遇到的所有情况。

      【讨论】:

      • 您好,是否可以扩展此答案,以便即使链接失效,它仍然对未来的访问者有帮助?
      【解决方案3】:

      这里是一个示例函数,它复制了 strptime 的大部分功能。 JavaScript 日期对象通常会解析你扔给它的任何日期字符串,所以你不必担心太多。所以一旦你有了一个基于你的字符串的日期对象,你只需将每个元素推入一个 JS 对象并返回它。本站对 JavaScript 日期对象的属性有很好的参考:http://www.javascriptkit.com/jsref/date.shtml

              function strptime(dateString){
                  var myDate = new Date(dateString);
                  return {tm_sec:myDate.getSeconds(), 
                                  tm_min: myDate.getMinutes(), 
                                  tm_hour: myDate.getHours(), 
                                  tm_mday: myDate.getDate(),
                                  tm_mon: myDate.getMonth(), 
                                  tm_year: myDate.getFullYear().toString().substring(2), 
                                  tm_wday: myDate.getDay()};
      
              }
      
              var dateString = "October 12, 1988 13:14:00";       
              dateObj = strptime(dateString);
              document.write("d:" + dateObj.tm_min + "/" + dateObj.tm_hour + "/" + dateObj.tm_mday + "/" + dateObj.tm_mon + "/" + dateObj.tm_year);   
      

      【讨论】:

      • 我认为您不了解 strptime 的作用。你给它一个日期字符串和那个日期的格式。考虑一下我需要使用的这两种格式:%m/%d/%Y%d.%m.%Y。您的解析器如何判断“10/5/2008”是“2008 年 10 月 5 日”但“10.5.2008”是“2008 年 4 月 10 日”?
      • 根据您的描述,我假设您唯一的格式问题是日期字符串会被格式化,因为不同地区的人会格式化他们的日期。 JavaScript 日期对象知道浏览器的区域,并会自动相应地解析日期。
      • @Kelly Anderson:不,不是我希望浏览器根据它的地区来格式化日期(这对于旅行者来说可能会改变,并且不适合非母语人士)但它应该根据用户已经选择的语言偏好进行格式化。所以我需要 strptime 和一个格式化字符串。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      相关资源
      最近更新 更多