当前位置:  开发笔记 > 编程语言 > 正文

如何从javascript中的日期中减去分钟数?

如何解决《如何从javascript中的日期中减去分钟数?》经验,为你挑选了6个好方法。

如何将此伪代码转换为工作js [不要担心结束日期的来源,除非它是一个有效的javascript日期].

var myEndDateTime = somedate;  //somedate is a valid js date  
var durationInMinutes = 100; //this can be any number of minutes from 1-7200 (5 days)

//this is the calculation I don't know how to do
var myStartDate = somedate - durationInMuntes;

alert("The event will start on " + myStartDate.toDateString() + " at " + myStartDate.toTimeString());

Daniel LeChe.. 185

一旦你知道这个:

您可以Date通过从1970年1月1日起以毫秒为单位调用构造函数来创建.

valueOf()一个Date是自1970年1月1日的毫秒数

60,000一分钟内有毫秒: - ]

......这不是那么难.

在下面的代码中,Date通过从以下代码中减去适当的毫秒数来创建new myEndDateTime:

var MS_PER_MINUTE = 60000;
var myStartDate = new Date(myEndDateTime - durationInMinutes * MS_PER_MINUTE);

但是当你添加分钟时不会处理.要在添加分钟时正确处理,您应该使用`.getTime()`.示例:`var myStartDate = new Date(myEndDateTime.getTime()+ durationInMinutes*MS_PER_MINUTE);` (3认同)


Miquel.. 69

您还可以使用get和set分钟来实现它:

var endDate = somedate;

var startdate = new Date(endDate);

var durationInMinutes = 20;

startdate.setMinutes(endDate.getMinutes() - durationInMinutes);

值得注意的是`setMinutes()`足够聪明,可以正确处理负分钟.因此,如果开始日期是3:05,并且你想减去30分钟,那么你将把`-25`传递给setMinutes(),这很聪明,知道`3:-25`是2:35 `.(即它不会抛出异常.) (45认同)

@Kip - 谢谢,这就是让这个答案有价值的洞察力.但所有浏览器都保证这一点吗?我问,因为MDN说只允许0 - 59 - 但我怀疑在这种情况下文档是错的吗?请参阅:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/setMinutes (2认同)


Jason Sebrin.. 30

一切都只是滴答,没有必要记住方法 ......

var aMinuteAgo = new Date( Date.now() - 1000 * 60 );

要么

var aMinuteLess = new Date( someDate.getTime() - 1000 * 60 );
更新

在使用momentjs之后,我不得不说这是一个很棒的图书馆,你应该看看.确实,在许多情况下,刻度线可以使您的代码非常小,并且您应该尝试使您的代码尽可能小,以满足您的需要.但对于任何复杂的事情,请使用momentjs.



1> Daniel LeChe..:

一旦你知道这个:

您可以Date通过从1970年1月1日起以毫秒为单位调用构造函数来创建.

valueOf()一个Date是自1970年1月1日的毫秒数

60,000一分钟内有毫秒: - ]

......这不是那么难.

在下面的代码中,Date通过从以下代码中减去适当的毫秒数来创建new myEndDateTime:

var MS_PER_MINUTE = 60000;
var myStartDate = new Date(myEndDateTime - durationInMinutes * MS_PER_MINUTE);


但是当你添加分钟时不会处理.要在添加分钟时正确处理,您应该使用`.getTime()`.示例:`var myStartDate = new Date(myEndDateTime.getTime()+ durationInMinutes*MS_PER_MINUTE);`

2> Miquel..:

您还可以使用get和set分钟来实现它:

var endDate = somedate;

var startdate = new Date(endDate);

var durationInMinutes = 20;

startdate.setMinutes(endDate.getMinutes() - durationInMinutes);


值得注意的是`setMinutes()`足够聪明,可以正确处理负分钟.因此,如果开始日期是3:05,并且你想减去30分钟,那么你将把`-25`传递给setMinutes(),这很聪明,知道`3:-25`是2:35 `.(即它不会抛出异常.)
@Kip - 谢谢,这就是让这个答案有价值的洞察力.但所有浏览器都保证这一点吗?我问,因为MDN说只允许0 - 59 - 但我怀疑在这种情况下文档是错的吗?请参阅:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/setMinutes

3> Jason Sebrin..:

一切都只是滴答,没有必要记住方法 ......

var aMinuteAgo = new Date( Date.now() - 1000 * 60 );

要么

var aMinuteLess = new Date( someDate.getTime() - 1000 * 60 );
更新

在使用momentjs之后,我不得不说这是一个很棒的图书馆,你应该看看.确实,在许多情况下,刻度线可以使您的代码非常小,并且您应该尝试使您的代码尽可能小,以满足您的需要.但对于任何复杂的事情,请使用momentjs.


IMO这不是那么简单。解密此代码实际需要花费一些精力。更好的方法是将这种逻辑包装在函数中。

4> svarog..:

moment.js有一些很好的方便方法来操作日期对象

该.subtract方法,允许用户从一个日期减去一定量的时间单位,通过提供量,和一个TIMEUNIT字符串.

var now = new Date();
// Sun Jan 22 2017 17:12:18 GMT+0200 ...
var olderDate = moment(now).subtract(3, 'minutes').toDate();
// Sun Jan 22 2017 17:09:18 GMT+0200 ...



5> crashwap..:

这是我发现的:

//First, start with a particular time
var date = new Date();

//Add two hours
var dd = date.setHours(date.getHours() + 2);

//Go back 3 days
var dd = date.setDate(date.getDate() - 3);

//One minute ago...
var dd = date.setMinutes(date.getMinutes() - 1);

//Display the date:
var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var date = new Date(dd);
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
var displayDate = monthNames[monthIndex] + ' ' + day + ', ' + year;
alert('Date is now: ' + displayDate);

资料来源:

http://www.javascriptcookbook.com/article/Perform-date-manipulations-based-on-adding-or-subtracting-time/

/sf/ask/17360801/



6> 小智..:
var date=new Date();

//here I am using "-30" to subtract 30 minutes from the current time.
var minute=date.setMinutes(date.getMinutes()-30); 

console.log(minute) //it will print the time and date according to the above condition in Unix-timestamp format.

您可以使用。new Date()例如将Unix时间戳转换为常规时间。

var extract=new Date(minute)
console.log(minute)//this will print the time in the readable format.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有