如何使用Moment js将UTC时间转换为正常时间格式

时间:2014-09-18 23:55:26

标签: javascript momentjs

我正在尝试将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日

1 个答案:

答案 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');
}