我的日期格式为YYYY-MM-DD
,我希望显示给定日期的第28天。我尝试了一些方法,但无法修复它。如果可能的话,我想要一个不使用Moment.js的解决方案
如果没有其他解决方案,有人可以帮我使用Moment.js吗?
答案 0 :(得分:6)
var date =new Date("2016-08-30");
var newDate = new Date(date.getFullYear(),date.getMonth(),date.getDate()+28)
答案 1 :(得分:5)
这是一个函数,我变成了处理日期偏移的Date原型:
Date.prototype.addDays = function(days)
{
var day = new Date(this.valueOf());
day.setDate(day.getDate() + days);
return day;
}
d = new Date
d.addDays(28)
答案 2 :(得分:1)
所以你基本上想要在给定日期增加28天?那就是给你的。
var d = new Date(2016, 7, 30) // parsing dates is a different task
// d equals Tue Aug 30 2016 00:00:00 GMT+0200 (CEST)
var offset = 28 * 24 * 60 * 60 * 1000;
var newDate = new Date(d.getTime() + offset)
// newDate equals Tue Sep 27 2016 00:00:00 GMT+0200 (CEST)
如果您还想解析/字符串化您可以使用的日期:
// parse date
var dateStr = '2016-08-30';
var date = new Date(dateStr);
// stringify date
date.toISOString().split('T')[0]
答案 3 :(得分:1)
java脚本:
var today = new Date();
var noDaysToAdd = 28;
someDate.setDate(today() + noDaysToAdd);
Formatting to YYYY-MM-DD :
var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();
var someFormattedDate = y + '-' + mm + '-' + dd ;
答案 4 :(得分:1)
你可以做这样的事情
var d=new Date("2016-08-30");
var n=28; //number of days to add.
$scope.renewaldate=new Date(d.getFullYear(),d.getMonth(),d.getDate()+n);
初始化日期变量
UTC时间
使用new Date(Date.UTC(year, month, day, hour, minute, second))
,您可以从特定的UTC时间创建日期对象。
<强>非UTC 强>
使用getTimezoneOffset()
获取时区,然后设置时间
var d = new Date(xiYear, xiMonth, xiDate);
d.setTime( d.getTime() + d.getTimezoneOffset()*60*1000 );
答案 5 :(得分:0)
我建议您将日期转换为时间戳,在其中添加100 * 60 * 60 * 24 * 28
(28天内的毫秒数),然后将其转换回人类可读日期。
var now = new Date(
(new Date()).valueOf()
+ 1000 * 60 * 60 * 24 * 28
)
然后您需要将其格式化为
console.log(now.getFullYear()
+ "-"
+ (now.getMonth() + 1)
+ "-"
+ (now.getDays() + 1)
)
+ 1
是因为JavaScript在0
到11
而不是1
到12
之间提供了几天和几个月。
仍然存在问题,即您获得了5
而不是05
,因此您可能需要自己编写一个类似
function forceTwoDigits(val){
val = String(val) // Force value to be a string.
if(val.length == 1) return "0" + val;
return val; // If it hasn't returned yet
}