使用DateTimeField
通过以下方式将时间戳记保存在Django的auto_now_add
中时:
creation_timestamp = models.DateTimeField(auto_now_add=True)
该字段的保存时间为毫秒:
2018-11-20T15:58:44.767594-06:00
我希望将其格式化为不显示毫秒:
2018-11-20T15:58:44-06:00
但是我能想到的唯一选择不能完全显示我的需求:
format="%Y.%m.%dT%H:%M:%S%z"
给了我2018.11.20T15:58:44-0600
如何以我需要的方式格式化此字段?
或者,我宁愿完全不用毫秒保存DateTimeField
,但是auto_now_add
可以做这种事情吗?
答案 0 :(得分:2)
您可以覆盖DateTimeField
的{{1}}方法并在其中添加更改。例如:
value_to_string
并在模型中使用它:
class CustomDateTimeField(models.DateTimeField):
def value_to_string(self, obj):
val = self.value_from_object(obj)
if val:
val.replace(microsecond=0)
return val.isoformat()
return ''
答案 1 :(得分:0)
如果要在显示时设置其格式,可以使用:Class A:
var = ""
def __init__(self,name):
self.name = name
A.var = name
A_obj = A("John")
您还可以进行creation_timestamp.strftime("%Y-%m-%d%H:%M:%S")
以该格式保存,但这将要求进行一系列更改,这些更改将适用于整个系统:
在设置文件中设置以下内容:
DateTimeField
DATETIME_FORMAT="%Y-%m-%d%H:%M:%S"
用于制作烦人的本地化数据在日期格式方面没有先例。L10N=False
但是,请考虑以下事实:默认情况下,此更改将应用于项目中的所有日期时间对象。
答案 2 :(得分:0)
我认为您将不得不使用isoformat。看那个答案:
Show the : character in the timezone offset using datetime.strftime
答案 3 :(得分:0)
我使用 pandas to_datetime() 函数将时间转换为字符串格式。
import pandas as pd
record_list = myModel.objects.all()
for idx, record in enumerate(record_list ):
st = str(pd.to_datetime(record.start_time))
record_list[idx].start_time = st