我正在处理REST调用,我需要在" 2006-09-01T07:00:00.000 + 0000"格式。
用户在" YYYY / MM / DD"中输入日期格式和我正在使用" moment.js"使用此格式格式化ISO 8601中的日期" YYYY-MM-DDTHH:MM:SS.MMMZ" 。但它给了我这个输出" 1969-06-20T00:06:00.Jun-07:00"。
那么,我如何以这种格式获得约会" 2006-09-01T07:00:00.000 + 0000"使用moment.js还是Javascript?
答案 0 :(得分:6)
Yes, it is ISO 8601。 2006-09-01T07:00:00.000+0000
是2006年第9个月的第一天,7小时0分,0.000秒,距离UTC 0小时。是否允许小数取决于各方交换日期(这是ISO的一种奇特的方式,称“它是可选的”)。
4.2.2.4带小数的表示
如果特定应用需要,可以包括小时,分钟或秒的小数部分。如果包含小数部分,则应省略低阶时间元素(如果有),小数部分应从整数部分除以ISO 31-0中指定的小数符号,即逗号[,]或句号[ ]。其中,逗号是首选标志。如果数字的大小小于1,则小数符号应在3.6之前加上两个零。
根据申请,交换方应同意小数部分的位数。格式应为[hhmmss,ss],[hhmm,mm]或[hh,hh],视情况而定(小时分钟秒,小时分钟和小时),小数点后必要的位数。小数部分应至少有一位数。在下面的例子中,已经同意给最小的时间元素一个小数的小数部分。
(正如@chansen指出,技术上它应该是2006-09-01T07:00:00.000+00:00
,在时区上有一个分隔符,因为根据4.3.3(d),每个部分都必须使用基本的格式(没有分隔符)或扩展格式(使用分隔符),但没有人对此感到困扰,strptime无法生成该格式,并且您可能打破某些ISO 8601解析器。)
Javascript和moment.js的其他答案涵盖了输出此内容。
Javascript的输出为Date.toISOString。 Date.new也将接受ISO 8601字符串。尽管Internet Explorer仅在版本9(IE 8 still represents 5% of desktop users)中添加了它,但每个最近的浏览器都应该支持它。
这是moment.js docs on String formatting。 YYYY-MM-DDTHH:MM:SS.MMMZ
不正确,因为您使用M
表示三种不同的事情。你想要的是YYYY-MM-DDTHH:mm:ss.SSSZZ
。
答案 1 :(得分:0)
适用于2006-09-01T07:00:00.000 + 0000
的格式是:yyyy-MM-dd'T'hh:mm:ss.sssZ