【发布时间】:2017-10-06 15:49:12
【问题描述】:
有没有办法从日期字符串中获取日期,例如从“01-Apr-2013”到“01-Apr-2016”你能就编写 Regex 或 JavaScript 提供任何建议吗?
【问题讨论】:
标签: javascript jquery html date date-format
有没有办法从日期字符串中获取日期,例如从“01-Apr-2013”到“01-Apr-2016”你能就编写 Regex 或 JavaScript 提供任何建议吗?
【问题讨论】:
标签: javascript jquery html date date-format
这对于您所询问的输入非常具体,但它应该可以工作:
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(中部夏令时间)}
【讨论】:
您可以使用此 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;
}
【讨论】: