我正在尝试将UTC时间格式转换为本地时间格式:
以下是示例:
我从服务器端获得了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日
答案 0 :(得分: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');
}