将PHP日期发送为JavaScript日期格式
我想把我的PHP服务器时间传递给我的JavaScript文件 PHP代码:将PHP日期发送为JavaScript日期格式,php,javascript,date,timezone,timezone-offset,Php,Javascript,Date,Timezone,Timezone Offset,我想把我的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); }); var date = new Date(Date.parse(DATE)); PHP
date_default_timezone_set('Australia/Perth');
echo date("r");
JavaScript:
$.get('time.php', function(data) {
today = new Date(data);
closing = new Date(data);
});
var date = new Date(Date.parse(DATE));
PHP代码返回Sun,2012年3月18日12:01:23+0800,这是澳大利亚/珀斯的正确时间。但这会返回一个无效的JavaScript日期对象
当我尝试将其转换为时间戳时,如:
echo strtotime(date("r"));
我得到了JavaScript日期Sun Mar 18 2012 04:03:14 GMT+0000(湿)(这是今天js var的值)
如果我使用:
echo gmstrftime('%s');
我得到:2012年3月17日星期六20:04:30 GMT+0000(湿)
谁能帮帮我吗
$.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";
带有echo date
的PHP代码与JavaScript代码不完全相同。这将完全模拟JavaScript代码:
echo date('D M d Y H:i:s O');
一个好方法是使用时间戳:
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>
';
echo$data=time()*1000;
回声'
当前服务器时间为:
var x=document.getElementById(“setxDatetime”);
x、 innerHTML=x.innerHTML+新日期(“.$data”);
';
1381324693000
当前服务器时间为:2013年10月9日星期三16:18:13 GMT+0300(GTB标准时间)
如果您当前的语言环境不是英语,那么它将不起作用
更好的选择是使用:
new Date(<? echo date("Y, n - 1, d, H, i, s") ?>)
新日期()
非常简单:
new Date("<?= date('Y/m/d H:i:s'); ?>");
新日期(“”);
可能有更好的解决方案,但这一个解决了我的问题。关键问题是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代码保持原样,并使用JavaScript解析日期:
$.get('time.php', function(data) {
today = new Date(data);
closing = new Date(data);
});
var date = new Date(Date.parse(DATE));
那么,即使是这样的事情也会起作用:
new Date(Date.parse('11 March 2017'));
通过控制台日志输出(GMT+1000是因为我在澳大利亚):
更多信息如下:以下是DateTime对象的示例: PHP代码(适用于PHP5.3或更高版本) JavaScript代码
它是用来从unix时间戳转换的(因为毫秒),我忘记了删除它。无论如何,它返回Sun Mar 18 2012 04:10:32 GMT+0000(湿),而PHP返回Sun Mar 18 2012 12:10:32+0800。谢谢,我需要将我的javascript日期对象设置为Sun,2012年3月18日12:10:32,以便所有以下计算正常工作!为什么不使用PHP的
time()
函数呢?这与@austinbrunkhost today返回Sun Mar 18 2012 04:20:17 GMT+0000(湿)警告:PHP返回从1-12开始的月份,但Javascript使用0-11。这将始终为您提供一个月前的时间戳。此外,我们不能简单地从JS date对象中减去一个月,因为Javascript将在构建时“更正”日期。。。如果您在1月31日运行此代码,Javascript将被指定为“2月31日”,然后它将被更正为3月3日(假设2月28日)。Re“current locale is not English”:您的意思是“current locale not US English”?英语是一种语言,不是区域设置。这不会改善或与其他任何答案不同。事实上,我希望使用内置解析器解析不受支持的格式不是一个好主意,因为解析依赖于实现,在意外和难以找到的情况下可能会失败。链接断开(带有一个相当有趣的404 PNG动画):“没有找到。很抱歉,我们找不到您要的内容。“这不是我在Javascript中看到的格式。我看到的格式是:date('D m D Y H:I:s\G\m\TO(t);
$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);
$.get('time.php', function(data) {
var serverDate = new Date(data);
});