Moment.js解决时区偏移

时间:2018-10-18 06:39:52

标签: javascript momentjs

我在Angular 6前端中工作,并从另一个没有时区的系统时间戳(C#后端,DateTime)接收。我怀疑javascript会自动将本地时区添加到Date对象。

示例:

从后端接收:2018-10-15T07:53:00.000Z

控制台记录时:console.log(timestamp) // Mon Oct 15 2018 09:53:00 GMT+0200

我正在使用moment.js,并且已经尝试过moment.utc()moment(DATE).utc()。但是它仍然添加了本地时区,特别是因为我必须将我的矩对象重新转换为Date类型的.toDate()

我该如何解决时区差异并找回可用的utc日期或与接收到的结构相同?

2 个答案:

答案 0 :(得分:1)

尝试根据需要设置使用格式。

let str = '2018-10-15T07:53:00.000Z';
let moment = moment(str).utcOffset(str)
console.log(moment.format('DD/MM/YYYY HH:mm'))
<script src="https://momentjs.com/downloads/moment.js"></script>

第二个片段(使用字符串中的日期对象)

let str = '2018-10-15T07:53:00.000Z';
let moment = moment(str).utcOffset(str);
console.log(moment.toDate())
<script src="https://momentjs.com/downloads/moment.js"></script>

答案 1 :(得分:1)

您输入的内容是UTC,将被正确解析。 Javascript日期没有时区的概念!本地时区是通过静态方法应用于序列化(Date.toString()Date.toDateString()等)的(Console.log(Date)使用Date.toString()。)

使用Date.toLocaleString([],{timeZone:"UTC"})。强制使用UTC,您将在输出中看到与输入相同的时间。更详细的信息是here:-)

它在这里工作:

console.log(new Date('2018-10-15T07:53:00.000Z').toLocaleString([],{timeZone:'UTC'}))