js获取当前日期的昨天明天/前后1,2天甚至前后多天的解决方案
根据当前日期或者某个计算出该日期的前一天后一天的日期值
需求描述:
根据当前时间,计算前一天/后一天(也就是昨天、明天)的日期,且格式为YY-mm-dd这种日期格式。最好是能计算出前一天或者2天的日期。
代码逻辑:
1、首先我们获取当前时间
2、计算前一天、后一天的日期
3、根据日期格式要求,匹配出日期来
代码实现:
获取当前时间
var dateTime = new Date();
计算前一天后一天
dateTime.setDate(dateTime.getDate() + days);
根据指定日期匹配
var args = {
"M+": dateTime.getMonth() + 1,
"d+": dateTime.getDate(),
"h+": dateTime.getHours(),
"m+": dateTime.getMinutes(),
"s+": dateTime.getSeconds(),
"q+": Math.floor((dateTime.getMonth() + 3) / 3), //quarter
"S": dateTime.getMilliseconds()
};
console.log(args)
if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (dateTime.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var i in args) {
var n = args[i];
if (new RegExp("(" + i + ")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? n : ("00" + n).substr(("" + n).length));
}
return format
完整代码如下:
function getSomeDate(days, format) {
var dateTime = new Date();
dateTime.setDate(dateTime.getDate() + days);
// 匹配字符串格式
var args = {
"M+": dateTime.getMonth() + 1,
"d+": dateTime.getDate(),
"h+": dateTime.getHours(),
"m+": dateTime.getMinutes(),
"s+": dateTime.getSeconds(),
"q+": Math.floor((dateTime.getMonth() + 3) / 3), //quarter
"S": dateTime.getMilliseconds()
};
if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (dateTime.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var i in args) {
var n = args[i];
if (new RegExp("(" + i + ")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? n : ("00" + n).substr(("" + n).length));
}
return format
}
执行代码结果:
getSomeDate(-1, 'yyyy-MM-dd h:m:s') // 2019-04-06 18:40:13
getSomeDate(1, 'yyyy-MM-dd h:m:s') // 2019-04-08 18:40:13
版权声明
本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。
评论