我已经使用php date()函数将日期转换为01-01-2039:
...
class Book(models.Model):
title =models.CharField(max_length =255)
author =models.CharField(max_length =255)
genre =models.CharField(max_length=255)
date=models.DateTimeField(auto_now_add =True)
owner =models.ForeignKey(get_user_model(),on_delete =models.CASCADE,)
...
输出显示为:01-01-1970
有什么解决办法吗?
答案 0 :(得分:0)
评论对话中的答案
问题是由Unix Timestamp Epoch problem引起的。
本机PHP的解决方案是使用正确处理此特定整数溢出的64位PHP版本。
echo (PHP_INT_SIZE===8)?"64 bit ":"32 bit ";
上面的代码显示了PHP版本。
如果存在32位PHP,则需要用64位PHP代替
答案 1 :(得分:0)
除了@Martin的答案外,我还要指出使用strtotime
时某些日期格式引起的歧义。
在manual中:
通过查看 m / d / y 或 d-m-y 格式的日期可以消除歧义 各个组件之间的分隔符:如果分隔符是 斜线(/),则假定为美国 m / d / y ;而如果 分隔符是破折号(-)或点(。),然后是欧洲 d-m-y 格式 假设。但是,如果年份以两位数格式给出,并且 分隔符为破折号(-),日期字符串被解析为 y-m-d 。
为避免潜在的歧义,最好使用ISO 8601( YYYY-MM-DD ) 日期或
DateTime::createFromFormat()
。
$dt = DateTime::createFromFormat('d-m-Y', '01-01-2039');
echo $dt->format('d-m-Y');