>models.py裏
from django.utils import timezone
createstr=models.DateTimeField(default=timezone.now)
createtime1=models.DateTimeField(auto_now_add=True)#,auto_now_add=True创建的时间,不再變化
updatetime=models.DateTimeField(auto_now=True)#更新的时间,一直變化
image.png
改setting
1、datetime.datetime.now():输出的永远是本地时间(naive time)与配置无任何关系;
2、datetime.datime.utcnow():如果在django配置USE_TZ=False,则该输出时间与datetime.datetime.now()完全相同;如果设置USE_TZ=True,则输出的是UTC时间(naive time);
3、django.util.timezone.now():如果在django配置USE_TZ=True,则输出的是UTC时间(active time);如果配置USE_TZ=False,则与datetime.datetime.now()完全相同。
总结:在django开发时,尽量使用UTC时间,即设置USE_TZ=True,TIME_ZONE = 'Asia/Shanghai',并且在获取时间的时候使用django.util.timezone.now()。因为后台程序使用时间时UTC时间就能满足,也能保证证模板时间的正确显示。
网友评论