首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅用DateJS解析时间字符串

仅用DateJS解析时间字符串
EN

Stack Overflow用户
提问于 2010-10-25 07:49:47
回答 2查看 3.3K关注 0票数 10

我正在使用优秀(但很大)的DateJS库来处理webapp应用程序中的日期和时间。我只是遇到了一些我不知道该如何处理的事情。

我希望我的用户能够只输入时间字符串,没有日期,但是他们应该能够以任何他们喜欢的方式输入它。例如:

  • 下午五时
  • 17:00
  • 下午五时
  • 5:00 p
  • 五便士
  • 等。

使用Date.parse(value)将这些字符串转换为完整日期,这正是我想要的。但是,它还允许用户输入日期字符串的任何其他部分,例如:

  • 下午5时
  • 2010年1月1日下午5时
  • 等。

我试图使用DateJS来验证输入字段的时间值。类似于:

代码语言:javascript
复制
function validateTime(value) {
    return Date.parse(value) !== null;
}

有办法使用DateJS特性来解决这个问题吗?还有其他所以问题提供解决方案,但如果DateJS有办法做到这一点,我真的不想在我的应用程序中添加更多的自定义代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-25 08:32:46

在问完我的问题后不久,我发现Date.parseExact()可以接受一个格式字符串数组。不知何故我很怀念。我设法用以下代码处理了一些东西:

代码语言:javascript
复制
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的格式字符串。

票数 10
EN

Stack Overflow用户

发布于 2013-05-07 17:58:59

加性的方法似乎很麻烦。在我看来,带走了DateJS的美丽。我需要同样的解决方案,并决定在使用DateJS进行解析之前,偷偷地在输入字符串前面附加日期:

代码语言:javascript
复制
var parsed = Date.parse(Date.today().toString('M/d/yyyy') + ' ' + this.value);

if (parsed) {
  alert(parsed.toString('h:mm tt'));
}

现在,DateJS将不会到处寻找它的任何日期部分解析模式,因为您已经将它嵌入其中了。

希望这能帮到别人!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4012702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档