我知道这可能是 ServerFault 的问题,但我无法登录。
我在云中有一个运行 Nginx + PHP5-fpm 的 Ubuntu 实例。
我已将 php.ini 中的时区设置为Asia/Singapore
并验证它设置为phpinfo()
.
我也设置了操作系统时区dpkg-reconfigure tzdata
。
一段时间以来,我一直在为我的申请中设置错误的日期而烦恼。我最初认为这可能是我在 PHP 设置中所做的事情,所以在我的引导脚本中,我包括:
date_default_timezone_set('Asia/Singapore');
尝试按照这篇文章中的建议通过 PECL 安装 timezonedb: Setting default timezone does not work 尽管 timezone is valid
在网络表单上设置的用户设置日期在处理时仍会转换为“昨天”。我在 PHP 中都尝试过date()
&gmdate()
并得到相同的结果。
编辑
更多信息以防万一。
用户选择一个日期
jQuery DatePicker
在表单提交时,我将时间戳发送回服务器供 PHP 处理和存储。在存储之前,我在 PHP 中将时间戳除以 1000。
<?php $timestamp = (int) $_POST['birthday'] / 1000 // this is received from a form.
在回显日期和时间戳后,
<?php echo date('dS F Y', (int) $timestamp); // when rendering to HTML... // computes to 13th April 1981 //JS new Date(data.timestamp * 1e3).toString() // the exact same timestamp from earlier but received from server. // computes to Tue Apr 14 1981 23:30:00 GMT+0730 (SGT)
有任何想法吗?