【问题标题】:How to save csv datetime string into Django model field [duplicate]如何将csv日期时间字符串保存到Django模型字段中[重复]
【发布时间】:2020-05-15 23:57:31
【问题描述】:

我想将 DateTimeField 数据从 csv 存储到我的模型字段中,但出现错误

RuntimeWarning:DateTimeField Applications.submitted_at 收到一个 天真的日期时间(2020-01-30 11:08:20.429620),而时区支持是 积极的。运行时警告)

我的models.py

 submitted_at = models.DateTimeField(default=datetime.now, blank=True)
 form_fill_up_datetime = models.DateTimeField(auto_now=True, auto_now_add=True),

我该如何解决这个问题?

这是我将 csv 字符串数据转换为日期时间字段的函数

def date_check(data):#
    if data is None:
        print("Date Field is empty")
        return
    try:
        try:
            date_format1 = '%m/%d/%Y %H:%M:%S'
            date_obj = datetime.datetime.strptime(data, date_format1)
            return date_obj
        except ValueError:
            print('Incorrect data format, should be YYYY-MM-DD')
            date_format2 = '%Y-%m-%d %H:%M:%S'
            date_obj = datetime.datetime.strptime(data, date_format2)
            return date_obj
    except Exception as e:
        print(e)
        return

【问题讨论】:

标签: python django django-models


【解决方案1】:

您看到的不是错误,而是警告。它说你运行服务器时区感知很奇怪,然后你仍然传递一个没有时区的datetime 对象。您可以向 datetime 对象添加时区,例如 UTC:

from pytz import utc

def date_check(data):#
    if data is None:
        print("Date Field is empty")
        return
    try:
        try:
            date_format1 = '%m/%d/%Y %H:%M:%S'
            date_obj = datetime.datetime.strptime(data, date_format1)
            return utc.localize(date_obj)
        except ValueError:
            print('Incorrect data format, should be YYYY-MM-DD')
            date_format2 = '%Y-%m-%d %H:%M:%S'
            date_obj = datetime.datetime.strptime(data, date_format2)
            return utc.localize(date_obj)
    except Exception as e:
        print(e)
        return

【讨论】:

    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    相关资源
    最近更新 更多