我有一个允许用户输入日期的日期输入字段,我需要验证这个输入(我已经有服务器端验证),但诀窍是格式取决于语言环境。我已经有一个系统可以将 strptime 格式字符串转换为用户的偏好,我想使用相同的格式在 Javascript 端进行验证。
任何想法或链接到strptime()
Javascript 中的实现?
我有一个允许用户输入日期的日期输入字段,我需要验证这个输入(我已经有服务器端验证),但诀窍是格式取决于语言环境。我已经有一个系统可以将 strptime 格式字符串转换为用户的偏好,我想使用相同的格式在 Javascript 端进行验证。
任何想法或链接到strptime()
Javascript 中的实现?
经过几天的谷歌搜索,我发现这个实现 虽然不完整,但似乎可以处理我现在拥有的所有案例。
我刚刚添加了strptime()的 php.js 实现;我已经对其进行了一些测试,但它需要进一步的单元测试。无论如何,请随意试一试;它应该涵盖 PHP 所做的所有事情(除了尚不支持未记录的 %E...(替代语言环境格式)说明符)。
请注意,它还取决于我们对 setlocale() 和 array_map() 的实现...
这是一个示例函数,它复制了 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);