2014-09-18 66 views
0

我想UTC时间酸盐转换为本地时间格式:如何使用转换UTC时间正常时间格式瞬间JS

这里是例子:

我得到了UTC格式的时间从服务器这看起来像:2014-09-17T11:09:58 + 1100。我的要求是将其转换为2014年9月17日。

但是,我尝试了以下所有方法,但仍然得到2014年9月3日。为什么发生这种情况?

我的尝试:

function dateFormatter(UTC) { 
     var dateFormat = 'd MMM YYYY'; 

     console.log(moment(UTC).zone('+1100').format(dateFormat)); 
     return moment(UTC).format(dateFormat).toLocaleString(); 
    } 

这两种方法仍然得到同样的结果:2014年9月3日

回答

2

有几件事情:

  • UTC是指Coordinated Universal Time,这是一个计时系统 - 不是格式。

  • “在UTC中”的值将具有零偏移量。既然你说这个值有一个偏移量+1100,把它叫做“UTC”没有任何意义。

  • 您不应该调用zone函数。这是为了将输入值转换为特定的时区偏移量。由于你的输入值已经包含一个偏移量,所以调用它是没有意义的。

  • 如果您只是试图保留给定的偏移量,请改为使用moment.parseZone

  • format string characters区分大小写。小写d是一周中的第几天,数字为0到6.您应该使用大写D来指定月份的某一天。

  • toLocaleString不是必需的。请注意,您是从字符串调用该函数,而不是日期或片刻。

全部放在一起:

function dateFormatter(s) { 
    return moment.parseZone(s).format('D MMM YYYY'); 
} 
+1

+1也可能值得一提的[ISO 8601格式(http://en.wikipedia.org/wiki/ISO_8601)同时澄清UTC。 – maerics 2014-09-22 21:43:32

+0

很酷,非常感谢您的详细解释 – Jusleong 2014-09-23 02:22:08