我正在使用优秀(但很大)的DateJS库来处理webapp应用程序中的日期和时间。我只是遇到了一些我不知道该如何处理的事情。
我希望我的用户能够只输入时间字符串,没有日期,但是他们应该能够以任何他们喜欢的方式输入它。例如:
使用Date.parse(value)将这些字符串转换为完整日期,这正是我想要的。但是,它还允许用户输入日期字符串的任何其他部分,例如:
我试图使用DateJS来验证输入字段的时间值。类似于:
function validateTime(value) {
return Date.parse(value) !== null;
}有办法使用DateJS特性来解决这个问题吗?还有其他所以问题提供解决方案,但如果DateJS有办法做到这一点,我真的不想在我的应用程序中添加更多的自定义代码。
发布于 2010-10-25 08:32:46
在问完我的问题后不久,我发现Date.parseExact()可以接受一个格式字符串数组。不知何故我很怀念。我设法用以下代码处理了一些东西:
function validateTime(input) {
return Date.parseExact(input, [
"H:m",
"h:mt",
"h:m t",
"ht","h t"]) != null ||
Date.parseExact(input, [
"h:mtt",
"h:m tt",
"htt","h tt"]) != null;
};注意,有些格式似乎不能同时包含在一起,这就是为什么我将它们分成两个单独的parseExact()调用。在本例中,我不能包含任何包含单个t的字符串和包含双tt的格式字符串。
发布于 2013-05-07 17:58:59
加性的方法似乎很麻烦。在我看来,带走了DateJS的美丽。我需要同样的解决方案,并决定在使用DateJS进行解析之前,偷偷地在输入字符串前面附加日期:
var parsed = Date.parse(Date.today().toString('M/d/yyyy') + ' ' + this.value);
if (parsed) {
alert(parsed.toString('h:mm tt'));
}现在,DateJS将不会到处寻找它的任何日期部分解析模式,因为您已经将它嵌入其中了。
希望这能帮到别人!
https://stackoverflow.com/questions/4012702
复制相似问题