如何在指定日期后28天获取日期?

时间:2016-12-21 18:07:09

标签: javascript html angularjs node.js date

我的日期格式为YYYY-MM-DD,我希望显示给定日期的第28天。我尝试了一些方法,但无法修复它。如果可能的话,我想要一个不使用Moment.js的解决方案

Jsfiddle

如果没有其他解决方案,有人可以帮我使用Moment.js吗?

6 个答案:

答案 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);

JSFIDDLE

初始化日期变量

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在011而不是112之间提供了几天和几个月。

仍然存在问题,即您获得了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
}