我正在使用以下命令在 Javascript 程序中创建几个 ISO 日期:
var isodate = new Date().toISOString()
它以 . 格式返回日期"2014-05-15T16:55:56.730Z"
。我需要从每个日期中减去 5 个小时。上述日期将被格式化为"2014-05-15T11:55:56.730Z"
我知道这很hacky,但非常感谢快速修复。
我正在使用以下命令在 Javascript 程序中创建几个 ISO 日期:
var isodate = new Date().toISOString()
它以 . 格式返回日期"2014-05-15T16:55:56.730Z"
。我需要从每个日期中减去 5 个小时。上述日期将被格式化为"2014-05-15T11:55:56.730Z"
我知道这很hacky,但非常感谢快速修复。
一种解决方案是在将日期转换为字符串之前对其进行修改。
var date = new Date();
date.setHours(date.getHours() - 5);
// now you can get the string
var isodate = date.toISOString();
要获得更完整和强大的日期管理,我建议查看momentjs。
你必须从字符串中减去小时数吗?
如果没有,那么:
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();
对于复杂的日期操作和增强的浏览器兼容性,我强烈建议使用moment.js,特别是如果您要执行多个操作。例子:
var fiveHoursAgo = moment().subtract( 5, 'hours' ).toISOString();
修改 Date 对象的方法是通过诸如Date.setHours之类的函数,而不管您随后用于显示日期的格式如何。这应该有效:
var theDate = new Date();
theDate.setHours(theDate.getHours() - 5);
var isodate = theDate.toISOString();
Moment.js非常适合这个。你可以做:
var date = new Date();
var newDate = moment(date).subtract('hours', 5)._d //to get the date object
var isoDate = newDate.toISOString();