【问题标题】:Regular expression for a date ranges日期范围的正则表达式
【发布时间】:2017-10-06 15:49:12
【问题描述】:

有没有办法从日期字符串中获取日期,例如从“01-Apr-2013”​​到“01-Apr-2016”你能就编写 Regex 或 JavaScript 提供任何建议吗?

【问题讨论】:

    标签: javascript jquery html date date-format


    【解决方案1】:

    这对于您所询问的输入非常具体,但它应该可以工作:

    function parseInput(input) {
        var expr = /from \"(.*)\" to \"(.*)\"/g;
        var matches = expr.exec(input);
        if (input !== null) {
            var start = new Date(matches[1]);
            var end = new Date(matches[2]);
            if(start === null || end === null) {
                return null;
            }
            return {
                start: start,
                end: end
            }
        }
        return null;
    }
    

    现在你应该得到这个:

    parseInput('from "01-Apr-2013" to "01-Apr-2016"');
    

    对象{开始:2013 年 4 月 1 日星期一 00:00:00 GMT-0500(中部夏令时间),结束:2016 年 4 月 1 日星期五 00:00:00 GMT-0500(中部夏令时间)}

    【讨论】:

    【解决方案2】:

    您可以使用此 javascript 代码代替正则表达式。

        var dateFrom = "01-Apr-2013";
        var dateLimit = "01-Apr-2016";
        var dateCheck = "04-Apr-2014"; //Suppose that this is the result of document.getElementById("userinput").innerHTML
    
    
        var d1 = formatDate(dateFrom).split("-");
        var d2 = formatDate(dateLimit).split("-");
        var c = formatDate(dateCheck).split("-");
    
        var from = new Date(d1[2], parseInt(d1[1]) - 1, d1[0]); 
        var to = new Date(d2[2], parseInt(d2[1]) - 1, d2[0]);
        var check = new Date(c[2], parseInt(c[1]) - 1, c[0]);
    
    
        (check > from && check < to) ? console.log("The user input is within the date range.") : console.log("Your date " + dateCheck + " is not between " + dateFrom + " and " + dateLimit + ".");
    
    
        function formatDate(date) {
            var monthNames = [
                "Jan", "Feb", "Mar",
                "Apr", "May", "Jun", "Jul",
                "Aug", "Sep", "Oct",
                "Nov", "Dec"
            ];
            var month = date.substr(3, 3)
            var day = date.substr(0, 2);
            var monthIndex = date.indexOf(month) + 1;
            var year = date.substr(7, 4);
    
            return day + '-' + monthIndex + '-' + year;
        }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多