我需要以ISO格式"YYYY-MM-DDTHH:mm:ss.SSS[Z]"
向服务器发送日期值我不需要时间细节,所以我将它们设置为零。
为此,我使用以下代码
var today = new Date();
var todayWithTimeAsZero = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);
我将todayWithTimeAsZero
作为Tue Jul 25 2017 22:06:03 GMT+0530 (India Standard Time)
现在如何将此日期转换为ISO格式。我到处研究但没有运气。
我尝试了var day = todayWithTimeAsZero.toISOString();
,但这会创建一个新的日期对象,其时间值的填充方式与2017-07-24T18:30:00.000Z
类似。另外,我的项目中的时刻可能会以某种方式使用它。
答案 0 :(得分:1)
使用moment.js
,您可以将当前日期作为UTC,然后将时间值设置为零并获取ISO字符串:
moment() // current date
.utc() // convert to UTC
.hours(0).minutes(0).seconds(0).milliseconds(0) // set time values to zero
.toISOString() // format to ISO8601
格式化字符串的值为2017-07-25T00:00:00.000Z
。
您还可以使用setUTCxxx
的{{1}}方法:
Date
var today = new Date();
today.setUTCHours(0);
today.setUTCMinutes(0);
today.setUTCSeconds(0);
today.setUTCMilliseconds(0);
将为today.toISOString()
。
答案 1 :(得分:1)
如果您创建日期然后将UTC时间归零并仅获取日期,则它将与时区偏移期间的本地日期不同。对于UTC + 1000的用户,UTC日期是昨天到10:00。对于UTC-0600的用户,它将在18:00(下午6点)之后“明天”。
无论如何,你可以做任何图书馆:
var d = new Date();
d.setUTCHours(0,0,0,0);
console.log(d.toISOString());