续集,Postgres。保存日期,包括 UTC 偏移量
Sequelize, Postgres. Save date including UTC offset
我有一个创建一些实体的应用程序(这对这个问题来说并不重要),但是这些实体可以在不同的时区创建,所以我必须在我的 createdAt
中存储 UTC 偏移量并且updatedAt
列。由于某些原因,我无法正确保存生成日期,请参考下面的代码片段,以获取更多详细信息:
这是我正在做的事情:
const { user } = userInfoWebAPICallResult as WebAPICallResult
const now = moment(moment.now())
.tz(user.tz!)
.toDate();
const entity = await Entity.create({
...someData,
createdAt: now
updatedAt: now,
});
我正在从外部获取 tz
值,它是一个看起来像 "America/Los_Angeles" 的字符串。如果我将 now
转换为字符串(通过调用 .format()
方法)并记录接收到的值,我将看到类似“2020-01-03T16:32:53-08:00”的内容。如您所见,日期具有偏移值,这是正确的日期,但在检查数据库时我看到“2020-01-04 00:32:53.013 00”,该字符串不再具有偏移值并且它看起来结果日期是自动计算的。
我需要按createdAt
日期进行过滤,来自不同时区的人会使用这个过滤机制。我计划通过 API 公开两个参数 date
和 utcOffset
,这将允许我根据用户时区 return 更正条目。
我错过了什么?
创建/更新实体的时间应该以 UTC 格式存储;它是一个时间戳,用于标识事件发生的确切时间点。
我建议在输出部分处理时区:将 UTC 时间戳转换为考虑用户时区的显示。
如果您需要知道创建或更新实体的用户是一天中的什么时间,我会将该用户的时区存储在单独的列中,使用标准时区标识符(如 "America/New_York" 而不是 "EDT" 或 "EST")。
我有一个创建一些实体的应用程序(这对这个问题来说并不重要),但是这些实体可以在不同的时区创建,所以我必须在我的 createdAt
中存储 UTC 偏移量并且updatedAt
列。由于某些原因,我无法正确保存生成日期,请参考下面的代码片段,以获取更多详细信息:
这是我正在做的事情:
const { user } = userInfoWebAPICallResult as WebAPICallResult
const now = moment(moment.now())
.tz(user.tz!)
.toDate();
const entity = await Entity.create({
...someData,
createdAt: now
updatedAt: now,
});
我正在从外部获取 tz
值,它是一个看起来像 "America/Los_Angeles" 的字符串。如果我将 now
转换为字符串(通过调用 .format()
方法)并记录接收到的值,我将看到类似“2020-01-03T16:32:53-08:00”的内容。如您所见,日期具有偏移值,这是正确的日期,但在检查数据库时我看到“2020-01-04 00:32:53.013 00”,该字符串不再具有偏移值并且它看起来结果日期是自动计算的。
我需要按createdAt
日期进行过滤,来自不同时区的人会使用这个过滤机制。我计划通过 API 公开两个参数 date
和 utcOffset
,这将允许我根据用户时区 return 更正条目。
我错过了什么?
创建/更新实体的时间应该以 UTC 格式存储;它是一个时间戳,用于标识事件发生的确切时间点。
我建议在输出部分处理时区:将 UTC 时间戳转换为考虑用户时区的显示。
如果您需要知道创建或更新实体的用户是一天中的什么时间,我会将该用户的时区存储在单独的列中,使用标准时区标识符(如 "America/New_York" 而不是 "EDT" 或 "EST")。