如何像这样(2019-11-12T10:26:39.613Z)将unix epoch datetimeformat保存到models.DateTimeField中

Posted

技术标签:

【中文标题】如何像这样(2019-11-12T10:26:39.613Z)将unix epoch datetimeformat保存到models.DateTimeField中【英文标题】:How to save unix epoch datetimeformat like this (2019-11-12T10:26:39.613Z) into models.DateTimeField accurately 【发布时间】:2020-03-07 17:43:27 【问题描述】:

我怎样才能像这样保存在这个 unix epoch datetimeformat 中

2019-11-12T10:26:39.613Z

准确导入models.DateTimeField

我试过了,但正如您所见,使用 datetime.datetime.strptime 进行分配似乎是正确的,但是在我保存它之后,日期时间值会发生变化(然后不准确)

>>> b.updated_at = datetime.datetime.strptime("2019-11-12T10:26:39.613Z", '%Y-%m-%dT%H:%M:%S.%fZ')
>>> b.updated_at
datetime.datetime(2019, 11, 12, 10, 26, 39, 613000)
>>> b.save()
>>> b.updated_at
datetime.datetime(2019, 11, 12, 3, 1, 35, 82434, tzinfo=<UTC>)

在model.py中

updated_at = models.DateTimeField(auto_now=True)

我正在使用 Django 1.11 和 Postgres 9.4

【问题讨论】:

【参考方案1】:

您的问题不在于您的日期格式。您的问题是您已将您的字段声明为auto_now=True。这会导致 Django 在保存时始终将其设置为当前时间,从而覆盖内存中的值。来自the docs:

每次保存对象时自动将字段设置为现在。对于“最后修改”的时间戳很有用。请注意,始终使用当前日期;它不仅仅是一个可以覆盖的默认值。

最后一句话描述了您观察到的行为。在将字段设置为 auto_now=True 的同时,您无法轻松更改它 - 如果您想在某些保存但不是全部时自动更新该字段,我认为您模型上的自定义 save 方法是最佳选择。

【讨论】:

谢谢。这只是一个试验场。好的,它适用于其他模型。DateTimeField。谢谢

以上是关于如何像这样(2019-11-12T10:26:39.613Z)将unix epoch datetimeformat保存到models.DateTimeField中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将日期时间转换为 GMT +7?

如何在R中过滤像Excel这样的“字符”

如何设置像'YYYYMM'这样的Postgresql默认值日期戳?

如何设计像优步应用这样的活动

关于T-SQL的多重IF-ELSE嵌套

如何在几个不同的Dataframe上合并'groupby'操作的结果