在Javascript中修改ISO日期

时间:2014-05-15 17:06:14

标签: javascript date isodate

我使用以下命令在Javascript程序中创建了几个ISO日期:

var isodate = new Date().toISOString()

"2014-05-15T16:55:56.730Z"的格式返回日期。我需要从每个日期减去5小时。然后,上述日期将格式化为"2014-05-15T11:55:56.730Z"

我知道这很黑,但非常感谢快速修复。

5 个答案:

答案 0 :(得分:14)

一种解决方案是在将日期转换为字符串之前修改日期。

var date = new Date();
date.setHours(date.getHours() - 5);

// now you can get the string
var isodate = date.toISOString();

要获得更完整,更健全的日期管理,我建议您查看momentjs

答案 1 :(得分:3)

你必须从字符串中减去小时数吗?

如果没有,那么:

var date= new Date();
date.setHours(isodate.getHours() - 5);
var isoDate = new Date().toISOString();

如果你必须使用字符串,我仍然很想做:

var date= new Date("2014-05-15T16:55:56.730Z");
date.setHours(isodate.getHours() - 5);
var isoDate = new Date().toISOString();

答案 2 :(得分:1)

对于复杂的日期操作和增强的浏览器兼容性,我强烈建议您使用moment.js,特别是如果您要做几个。例如:

var fiveHoursAgo = moment().subtract( 5, 'hours' ).toISOString();

答案 3 :(得分:1)

修改Date对象的方法是通过Date.setHours等函数,无论您使用何种格式显示日期。这应该有效:

var theDate = new Date();
theDate.setHours(theDate.getHours() - 5);
var isodate = theDate.toISOString();

答案 4 :(得分:0)

Moment.js非常适合这一点。你可以这样做:

var date = new Date();
var newDate = moment(date).subtract('hours', 5)._d //to get the date object
var isoDate = newDate.toISOString();