Parse ONLY a time string with DateJS

后端 未结 2 1703
一生所求
一生所求 2021-01-02 04:34

I\'m using the excellent (but large) DateJS library to handle dates and times in my webapp. I just came across something that I\'m not sure how to handle.

I want my

相关标签:
2条回答
  • 2021-01-02 05:11

    The additive approach seems cumbersome. Takes away the beauty of DateJS in my opinion. I needed the same solution and decided to just sneakily append the date in front of my input string before parsing with DateJS:

    var parsed = Date.parse(Date.today().toString('M/d/yyyy') + ' ' + this.value);
    
    if (parsed) {
      alert(parsed.toString('h:mm tt'));
    }
    

    Now DateJS will not be sniffing around for any of its date-part parsing patterns, as you have already subbed it in.

    Hope this helps someone!

    0 讨论(0)
  • 2021-01-02 05:27

    Shortly after asking my question, I discovered that Date.parseExact() can take an array of format strings. Somehow I'm missed that. I managed to get something working with the following code:

    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;
    };
    

    Note that some formats don't seem to be able to be included together at the same time, which is why I split them into two separate parseExact() calls. In this case, I couldn't include any string that contained a single t in it with format strings that contained a double tt in it.

    0 讨论(0)
提交回复
热议问题