使用UTC和当前时区

时间:2016-07-13 12:24:27

标签: angularjs postgresql python-2.7 datetime momentjs

我正在开展一个仅在一个国家/地区使用但现在正在多个国家/地区使用的项目。

所以我正在处理一些DateTime问题,因为你可以成像。

我在我的前端使用角度js,在后端使用python,在本项目中使用Postgres作为我的数据库。

为避免DateTime出现任何问题,并尝试使用时区更加轻松,我将数据库中的DateTime保存为UTC。

from DateTime import DateTime

# inside a class of my entity
self.start_date = datetime.utcnow()

这工作正常,问题是当我尝试将日期转换回来时。

例如。

  

如果我的应用程序在GMT -1的国家/地区运行,那么当用户   要求在数据库中保存实体及其2016-07-13 15:00:00   (使用UTC now())DateTime将成为2016-07-13 16:00:00。

但是当我试图找回价值时,我有两种情况:

  1. 如果我什么都不做,我会在数据库上收到DateTime," 2016-07-13 14:00:00"
  2. 如果我尝试转换为当地时区,我会变得像2016-07-13 17:00:00。时间增加了1,而不是我预期的减少。
  3. 我尝试使用momentjs库来处理日期,但似乎没有任何效果。

    我想知道我应该做的是获得GMT,比如(-01:00),然后使用来自数据库的DateTime进行一些数学计算,例如sub或GMT小时差的总和。

1 个答案:

答案 0 :(得分:0)

解决方案:

我的解决办法是,将所有内容以UTC格式保存在我的数据库中。

datetime 检索为UTC,并使用 momentjs 库转换为浏览器时区。

这样做。

moment.tz(moment.utc(datetime), moment.tz.guess());