【发布时间】:2010-10-03 15:49:26
【问题描述】:
我有一个允许用户输入日期的日期输入字段,我需要验证这个输入(我已经有服务器端验证),但诀窍是格式取决于区域设置。我已经有一个系统可以将 strptime 格式字符串转换为用户的偏好,我想使用相同的格式在 Javascript 端进行验证。
有任何想法或链接到 Javascript 中的 strptime() 实现吗?
【问题讨论】:
标签: javascript strptime phpjs
我有一个允许用户输入日期的日期输入字段,我需要验证这个输入(我已经有服务器端验证),但诀窍是格式取决于区域设置。我已经有一个系统可以将 strptime 格式字符串转换为用户的偏好,我想使用相同的格式在 Javascript 端进行验证。
有任何想法或链接到 Javascript 中的 strptime() 实现吗?
【问题讨论】:
标签: javascript strptime phpjs
我刚刚添加了 strptime() 的 php.js 实现;我已经对其进行了一些测试,但它需要进一步的单元测试。无论如何,请随意试一试;它应该涵盖 PHP 所做的一切(除了尚不支持未记录的 %E...(替代语言环境格式)说明符)。
注意,这也取决于我们对 setlocale() 和 array_map() 的实现...
【讨论】:
经过几天的谷歌搜索,我找到了this implementation,虽然不完整,但似乎可以处理我现在遇到的所有情况。
【讨论】:
这里是一个示例函数,它复制了 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);
【讨论】:
%m/%d/%Y 和%d.%m.%Y。您的解析器如何判断“10/5/2008”是“2008 年 10 月 5 日”但“10.5.2008”是“2008 年 4 月 10 日”?