从当前日期和时间中减去5分钟的JavaScript代码

4

我在从当前日期减去时间时遇到了问题。我的代码如下:

var d = new Date(),
year = d.getUTCFullYear(),
month = ('0'+(d.getUTCMonth()+1)).slice(-2),
day = ('0'+d.getUTCDate()).slice(-2),
hour = ('0'+d.getUTCHours()).slice(-2),
minute = ('0'+d.getUTCMinutes()).slice(-2),
second = ('0'+d.getUTCSeconds()).slice(-2);

var startDate = year+'/'+month+'/'+day+'-'+hour+':'+minute+':'+second;
console.log(startDate);

问题是现在是当前时间,我想从这个时间减去5分钟。 - Karan
minute = ('0'+d.getUTCMinutes()).slice(-2)-(5),分钟 = ('0'+d.getUTCMinutes()).slice(-2)-(5), - Rajesh Patel
1
提示:尝试使用 Date .getMinutes() 和 .setMinutes() 方法在提取所有部分之前调整时间。 - nnnnnn
5个回答

6

获取日期变量的毫秒数,减去5分钟,并从中创建一个新的日期对象:

var d = new Date()
// d = Mon Feb 29 2016 08:00:09 GMT+0100 (W. Europe Standard Time)
var milliseconds = Date.parse(d)
// 1456729209000
milliseconds = milliseconds - (5 * 60 * 1000)
// - 5 minutes
d = new Date(milliseconds)
// d = Mon Feb 29 2016 07:55:04 GMT+0100 (W. Europe Standard Time)

6
您可以使用如下方式:
var fiveMinuteAgo = new Date( Date.now() - 1000 * (60 * 5) )

2
如果您准备使用名为moment js的新日期操作js,您可以使用以下单个函数轻松完成:
moment().subtract(5, 'minutes');

Moment JS 文档


4
为了执行只需要三个命令的任务,添加14kb的代码似乎有点过多。 - Gerald Schneider
仅供参考。适用于复杂的日期驱动应用程序。 - Pramod S. Nikam

1
你可以像这样使用

var original = new Date();
var subtract5min = new Date();
alert("before : " + original);
subtract5min.setTime(original.getTime() - 5*60*1000);
alert("after : " + subtract5min);


这也可能导致负数分钟。 - Gerald Schneider

0

您可以通过以下方式进行简单的减法运算:

minute = ('0'+d.getUTCMinutes()).slice(-2)-5

var d = new Date(),
    year = d.getUTCFullYear(),
    month = ('0'+(d.getUTCMonth()+1)).slice(-2),
    day = ('0'+d.getUTCDate()).slice(-2),
    hour = ('0'+d.getUTCHours()).slice(-2),
    minute = ('0'+d.getUTCMinutes()).slice(-2),
    second = ('0'+d.getUTCSeconds()).slice(-2);

    if (minute>=5)
      minute = minute-5;
    else {
      minute = (parseInt(minute) + 60) - 5;
      hour = hour - 1;
    }

    var startDate = year+'/'+month+'/'+day+'-'+hour+':'+minute+':'+second;
    alert(startDate);


2
这可能导致一个负数。(而且,它需要在切片之前完成。) - nnnnnn
@Munawir,如果你按照_nn_nnnnn_建议的getMinutes/setMinues方法来做,我怀疑你是否需要if条件。 - Rayon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接