如何在 PHP 中保存早于时间戳的日期
这应该是一个简单的问题,但我就是找不到答案。
我有一个输入字段,用户在其中输入他的生日日期(DD.MM.YYYY),并使用 strtotime() 将其插入 MySQL 中的整数字段,因为它比日期时间更快(而且我有很多记录)。
但显然会有早于 1970 年 1 月 1 日的用户,因此时间戳将为零。 在网页上我想显示用户的年龄。如果他出生于1960年,那么他今年已经51岁了。 我知道我可以将 MySQL 字段更改为 DATETIME,但 PHP 仍然是计算用户年龄的字段,并且它使用 UNIX 时间戳。
那么,我应该如何组织呢? 谢谢!
This should be an easy one but I just can't find the answer.
I have an input field in which the user enters his birthay date (DD.MM.YYYY) and with strtotime() I insert it into integer field in MySQL because it's faster that datetime (and I have a lot of records).
But obviously there will be users older than 1.1.1970 so the timestamp would be zero.
On the webpage I want to show how old is the user. So if he is born in 1960 he would be 51 years old.
I know that I could change MySQL field to DATETIME but still the PHP would be the one to calculate the age of user and it uses UNIX timestamp.
So, how should I organize it?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 PHP 中处理日期和时间时,您应该使用 DateTime 对象。它在解析日期格式时非常灵活,它可以计算两个日期之间的差异,并且不存在 1970 或 2038 的问题。
You should use the DateTime object when handling dates and times in PHP. It is very flexible when parsing date formats, it can calculate the difference between two dates and it has no 1970 or 2038 problem.
您应该使用MySQL DATETIME,在sql查询中计算。当您保存到数据库时,使用 php date() 函数转换为 mysql DATETIME
You should use MySQL DATETIME, calculate in sql query . use php date() function to convert to mysql DATETIME when you save into database
您必须使用 DateTime 对象,您可以在此处看到一个示例代码:
输出:
此处在线测试: https://ideone.com/sKjBWS
You must use DateTime object, You can see one sample code here:
Output:
Online test here: https://ideone.com/sKjBWS