解析用户输入到日期

时间:2013-02-07 13:15:55

标签: javascript

我有一个用户插入日期的表单 (编辑:输入被复制为表单文档“因为它”因此格式化我的变化)

“2012 12 01”

“2012年12月1日”

“2012年12月1日”

“2012年1月15日”

还有一些不友好(但快速输入!)输入如:

“01122012”// 01 12 2012

“011212”// 01 12 2012

输入格式没有固定,所以我应该从我得到的东西中得到麻烦...

当然有一些优先事项:

“12.12.12”应解析为 yy.mm.dd IF VALID,或 dd.mm.yy 作为第二选项。

大多数准备好的功能都使用“正确格式化”的内容..所以我需要一个算法 (或其他语言中解析器的良好示例代码)

1 个答案:

答案 0 :(得分:1)

你可以“直截了当”地这样做:

var dateString; // user input date
if(dateString.split(" ").length == 3){
    // you have "yyyy mm dd" format
} else if(dateString.split("-").length == 3){
    // you have yyyy-mm-dd format
} else if(dateString.split(".").length == 3){
    // you have "yyyy.mm.dd" or "mm.dd.yyyy" format
} else {
    // suppose you have "yyyymmdd" or "mmddyyyy" format
}

如果您有两种不同的格式,则必须检查日,年和月值(如果它们是有效年份)。如果是这样,你可以建立日期,否则尝试其他方式。

对于yyyymmdd和mmddyyyy组合,您可以使用字符串上的substr()函数来提取日,年和月。

但是,您始终必须考虑用户输入可能是不正确的,如“2012年3月12日”或“abcdefg”,但我只是将整个功能包装到try-catch块中。