这个日期格式是什么? 2006-09-01T07:00:00.000 + 0000?是ISO_8601吗?

时间:2015-01-26 21:24:11

标签: date-format momentjs iso8601

我正在处理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?

2 个答案:

答案 0 :(得分:6)

Yes, it is ISO 86012006-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解析器。)

Javascriptmoment.js的其他答案涵盖了输出此内容。

Javascript的输出为Date.toISOStringDate.new也将接受ISO 8601字符串。尽管Internet Explorer仅在版本9(IE 8 still represents 5% of desktop users)中添加了它,但每个最近的浏览器都应该支持它。

这是moment.js docs on String formattingYYYY-MM-DDTHH:MM:SS.MMMZ不正确,因为您使用M表示三种不同的事情。你想要的是YYYY-MM-DDTHH:mm:ss.SSSZZ

  • YYYY - 年
  • MM - 月份编号(2位数)
  • DD - 月中的某一天(2位数)
  • HH - 小时(2位数,24小时格式)
  • mm - 分钟(2位数)
  • ss - 秒(2位数)
  • SSS - 数千秒
  • ZZ - UTC偏移

答案 1 :(得分:0)

适用于2006-09-01T07:00:00.000 + 0000

的格式

是:yyyy-MM-dd'T'hh:mm:ss.sssZ