我正在尝试进行预先写在变量中的计算(从给定日期添加或删除几天),但是我知道我需要进行一些剥离和替换才能使此工作正常进行,定义日期格式等,但一直在努力。用最简单的形式说如果我有一个像这样的实际字符串变量;
var newDate = 'Jul 10, 2018 + 1';
如何将其输出为
Jul 11, 2018
我已经搜索了一段时间,但似乎无法弄清楚该如何做,任何帮助都将不胜感激。谢谢
答案 0 :(得分:2)
这是您可以执行的方式:
用value
分割字符串+
以获得数组中的date
和add number
。
将string date
解析为Date()
。
将所需的days
添加到new Date
。
对于+和-数字和多个和使用eval
var inputDay=eval(inputStr[1].trim());
toLocaleDateString()方法返回一个字符串,该字符串具有此日期的日期部分的语言敏感表示形式。新的语言环境和选项参数使应用程序可以指定应使用其格式约定的语言,并允许自定义函数的行为。在较早的实现中,忽略区域设置和选项参数,使用的区域设置和返回的字符串形式完全取决于实现。
var newDate = 'Jul 10, 2018 + 1';
var inputStr=newDate.split(/\+(.+)/);
var inputDate=inputStr[0].trim();
var inputDay=eval(inputStr[1].trim());
var result=addDays(inputDate,inputDay);
console.log(result);
newDate = 'Jul 10, 2018 + 1 + - 2 + -3';
inputStr=newDate.split(/\+(.+)/);
inputDate=inputStr[0].trim();
inputDay=eval(inputStr[1].trim());
result=addDays(inputDate,inputDay);
console.log(result);
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
var options = {year: 'numeric',month: 'short', day: 'numeric'};
return result.toLocaleDateString('en-US', options)
}
答案 1 :(得分:1)
使用方法toLocalDateString()
设置日期格式,此特殊方法使您可以选择设置时区和语言环境。这是香草javascript。使用moment.js之类的库可以为您提供更多的灵活性和更多选择,更不用说更直观的方法了。
编辑:我已经根据您的特定用例更新了答案。此功能将检查您是在日期中添加还是减去日期,并返回格式化的日期。
我认为这有些笨拙,但我只是将其放在一起。您可以根据需要进行调整。
function checkString(dateString){
let operator, number, date = null;
let options = {year: 'numeric',month: 'short', day: 'numeric'};
if( dateString.includes("+") ){
operator = 'add';
}else if( dateString.includes("-") ){
operator = 'subtract';
}
switch(operator){
case 'add':
dateArr = dateString.split("+");
number = parseInt(dateArr[1]);
date = dateArr[0];
var newDate = new Date(date);
newDate.setDate(newDate.getDate() + number);
return newDate.toLocaleDateString('en-US', options);
case 'subtract':
dateArr = dateString.split("-");
number = parseInt(dateArr[1]);
date = dateArr[0];
var newDate = new Date(date);
newDate.setDate(newDate.getDate() - number);
return newDate.toLocaleDateString('en-US', options);
default:
return 'Unable to parse date';
}
}
let formattedDate = checkString('July 10, 2018 + 1');
alert(formattedDate);
答案 2 :(得分:0)
您将要使用Date
对象结合其getter方法来提取特定的数据属性。 toDateString()
是一个好的开始
答案 3 :(得分:0)
这将为您工作:
var months = [“一月”,“二月”,“三月”,“四月”,“五月”,“六月”, “七月”,“八月”,“九月”,“十月”,“十一月”,“十二月”];
var d = new Date(“ 2018,07,10”);
d.setDate(d.getDate()+ 1);
现在要获取所需的日期,请按以下方式获取月份,日期和整年: document.getElementById(“ demo”)。innerHTML = months [d.getMonth()] +“ “ + d.getDate()+”,“ + d.getFullYear();`