angular - 如何在 angular5 中将 Local 转换为 UTC,将 UTC 转换为 Local?

标签 angular timezone momentjs

我的页面上有一个 DateTimePicker,用户可以在其中选择本地时区的日期时间。但是当我们将其保存在数据库中时,我需要将其转换为 UTC 并保存。同样,在向用户显示时,我需要再次从 UTC 转换为用户的本地时区。

正在保存:将本地时区转换为 UTC
显示:UTC 到本地时区

由于服务器可能驻留在其他位置,我认为在客户端本身将值转换为 UTC 是正确的。不确定,是否有更好的方法来做到这一点。所以,在我的 angular5 页面中尝试同样的方法。

对 moment.js 不太熟悉,所以不能完全理解它的实际工作原理。有什么技巧可以更好地在 Angular 上做到这一点吗?

下面是我是如何实现的..

convertUtcToLocalString(val : Date) : string {        
    var d = new Date(val); // val is in UTC
    var localOffset = d.getTimezoneOffset() * 60000;
    var localTime = d.getTime() - localOffset;

    d.setTime(localTime);
    return this.formatDate(d);
}

convertUtcToLocalDate(val : Date) : Date {        
    var d = new Date(val); // val is in UTC
    var localOffset = d.getTimezoneOffset() * 60000;
    var localTime = d.getTime() - localOffset;

    d.setTime(localTime);
    return d;
}

convertLocalToUtc(val : Date) : Date { 
    var d = new Date(val);
    var localOffset = d.getTimezoneOffset() * 60000;
    var utcTime = d.getTime() + localOffset;

    d.setTime(utcTime);
    return d;
}

感谢您的帮助。

谢谢!

最佳答案

您可以在 Angular 中使用 moment 模块。

import * as moment from "moment";

从本地到UTC:

moment(local_date).toDate();

从 UTC 到本地:

moment.utc(utc_date).toDate()

关于angular - 如何在 angular5 中将 Local 转换为 UTC,将 UTC 转换为 Local?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49038881/

相关文章:

java - 强制 Java 时区为 GMT/UTC

Javascript 没有在 Date() 构造函数中正确使用一天

javascript - Ionic 2内部函数和外部函数

angular - 如何在 Angular 4 中的 HTML 中包含或排除属性

python - 将日期时间字符串、时区转换为纪元秒

Python pandas 将带时区的 unix 时间戳转换为日期时间

css - Angular 简单页脚问题(子组件中有 ngFor 循环)

Angular 2 form reset()不重置值_submitted或submitted

javascript - 将日期从带有偏移量的字符串转换为不同时区

momentjs - 时刻时区 - 检测给定时间是否不明确