我使用以下命令在Javascript程序中创建了几个ISO日期:
var isodate = new Date().toISOString()
以"2014-05-15T16:55:56.730Z"
的格式返回日期。我需要从每个日期减去5小时。然后,上述日期将格式化为"2014-05-15T11:55:56.730Z"
我知道这很黑,但非常感谢快速修复。
答案 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();