gpt4 book ai didi

php - MySQL 和 PHP 之间的日期

转载 作者:行者123 更新时间:2023-11-29 02:32:58 24 4
gpt4 key购买 nike

我在 MySQL 数据库中有一个包含日期类型字段的表。我的用户将日期放入一个字段(格式为 dd-mm-yyyy),我将其转换为 yyyy-mm-dd 以插入到数据库中。这很好用。我可以在其中看到日期(例如)2012-04-04。

我的问题是我随后选择了这条记录,将日期转换为我希望显示的格式 (dd-mm-yyyy) 并得到 03-04-2012。我明白为什么,因为我的数据库设置为 UTC,但是用户在柏林时间,因此柏林的 04-04-2012 00:00 是 03-04-2012 23:00 UTC。

问题意味着,如果我随后保存显示的日期 (03-04-2012),下次我看到它时,它显示为 02-04-2012,因为我只保存了日期,因此系统假设又是 00:00。

除了将其设置为日期时间类型而不是日期类型之外,我看不到解决此问题的方法,但是我宁愿不这样做,因为时间(出于各种原因)存储在单独的字段中。有什么建议吗?

最佳答案

当您插入一条记录时,您将添加为日期时间当前 UTC 时间,之后他们个人资料中的每个用户都可能想要/或设置他的时区。

如果您知道用户的时区,您可以轻松地将日期时间转换为用户区域设置时间。因为您知道时间之间的小时/分钟差异。

附言您可以将日期时间存储为 varchar,并在此字段中保存 unix 时间戳。 Unix 时间戳基于我认为的当前时区。

更新:我认为这可能有帮助

$date = time();
dump(date('d-m-Y H:i:s', $date)); // 03-04-2012 08:43:38

date_default_timezone_set('Europe/London');
dump('London: '. date('d-m-Y H:i:s', $date)); // London: 03-04-2012 11:43:38

date_default_timezone_set('Europe/Berlin');
dump('Berlin: '. date('d-m-Y H:i:s', $date)); // Berlin: 03-04-2012 12:43:38

date_default_timezone_set('Europe/Sofia');
dump('Sofia: '. date('d-m-Y H:i:s', $date)); // Sofia: 03-04-2012 13:43:38

转储函数返回 '<pre>'. $something .'</pre>' ;

关于php - MySQL 和 PHP 之间的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com