我想把我的PHP服务器时间传递给我的JavaScript文件。
PHP代码:
date_default_timezone_set('Australia/Perth');
echo date("r");
JavaScript:
$.get('time.php', function(data) {
today = new Date(data);
closing = new Date(data);
});
PHP代码返回2012年3月18日星期日12:01:23+0800,这是澳大利亚/珀斯的正确时间。但这会返回一个无效的JavaScript日期对象。
当我尝试将其转换为时间戳时,如:
echo strtotime(date("r"));
我得到了JavaScript日期2012年3月18日星期日04:03:14 GMT+0000(WET)(这是今天js var的值)
如果我使用:
echo gmstrftime('%s');
我得到:2012年3月17日星期六20:04:30 GMT+0000(WET)。
有人能帮我吗?
Luna的echo date
答案中的PHP代码与JavaScript代码并不完全相同。这将完全模仿JavaScript代码:
echo date('D M d Y H:i:s O');
您也可以保持PHP代码的原样,并使用JavaScript:解析日期
var date = new Date(Date.parse(DATE));
即使是这样的事情也会起作用:
new Date(Date.parse('11 March 2017'));
通过控制台日志输出(GMT+1000是因为我在澳大利亚):
Sat Mar 11 2017 00:00:00 GMT+1000
有关Date.parse()
的更多信息,请点击此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
$.get('time.php', function(data) {
today = new Date(data);
closing = new Date(data);
});
把这个字符串乘以1000的目的是什么?这种操作毫无意义。
这个PHP将为此工作。
echo date('D, d M y H:i:s')." +0000";
date('D M d Y H:i:s O')
如果您当前的语言环境不是英语,它将不起作用。
一个更好的选择是使用:
new Date(<? echo date("Y, n - 1, d, H, i, s") ?>)
这里有一个DateTime对象的例子:
PHP代码(适用于PHP 5.3或更高版本)
$serverDate = new DateTime('NOW');
// If you want to set a different time zone
// $serverDate = new DateTime('NOW', new DateTimeZone('Australia/Perth'));
echo $serverDate->format(DATE_ATOM);
JavaScript代码
$.get('time.php', function(data) {
var serverDate = new Date(data);
});
一个好方法是时间戳:
echo $data = time()*1000;
echo '
<div id="setxDatetime">The current server time is: </div>
<script type="text/javascript">
var x = document.getElementById("setxDatetime");
x.innerHTML = x.innerHTML + new Date(' . $data . ');
</script>
';
1381324693000
当前服务器时间为:2013年10月9日星期三16:18:13 GMT+0300(GTB标准时间)
可能有更好的解决方案,但这一个对我来说很有用。关键问题是JavaScript使用0-11个月,而PHP使用1-12个月,正如前面提到的。
function convert_date_php_js($date) {
$converted_date = date("Y", strtotime($date)) . ', ' .
(date("n", strtotime($date))-1) . ', ' .
date("j", strtotime($date));
return $converted_date;
}
$priceDate = "2016-09-14";
$d = convert_date_php_js($priceDate);
// Returns 2016, 8, 14
对我有效的是:
<?php $today = date("Y/m/d H:i:s"); ?>
<script>new Date(Date.parse('<?php echo $today; ?>'))</script>
这很简单:
new Date("<?= date('Y/m/d H:i:s'); ?>");