Ответ 1
PHP в nallar не совсем похож на JavaScript, это будет точно имитировать JavaScript:
echo date('D M d Y H:i:s O');
Я хочу передать свое время PHP-сервера в свой файл javascript.
Код PHP:
date_default_timezone_set('Australia/Perth');
echo date("r");
JS:
$.get('time.php', function(data) {
today = new Date(data);
closing = new Date(data);
});
php возвращает Sun, 18 марта 2012 г. 12:01:23 +0800, что является правильным временем для Австралии/Перта. Но это возвращает недопустимый объект даты javascript.
Когда я пытаюсь преобразовать его в timestamp, например:
echo strtotime(date("r"));
Я получаю дату javscript Sun Mar 18 2012 04:03:14 GMT + 0000 (WET) (это значение js var)
Если я использую:
echo gmstrftime('%s');
Я получаю: Сб Мар 17 2012 20:04:30 GMT + 0000 (WET).
Кто-нибудь может помочь мне?
Спасибо
PHP в nallar не совсем похож на JavaScript, это будет точно имитировать JavaScript:
echo date('D M d Y H:i:s O');
$.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") ?>)
Вы также можете оставить 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
Дополнительная информация здесь: https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
Вот пример с объектом DateTime
PHP-код (работает в > PHP 5.3)
$serverDate = new \DateTime('NOW');
// if you want to set different time zone
// $serverDate = new \DateTime('NOW', new \DateTimeZone('Australia/Perth'));
echo $serverDate->format(DATE_ATOM);
JS-код
$.get('time.php', function(data) {
var serverDate = new Date(data);
});
Хорошим способом является временная метка
echo $data = time()*1000;
echo '
<div id="setxDatetime">CURRENT SERVER TIME IS: </div>
<script type="text/javascript">
var x = document.getElementById("setxDatetime");
x.innerHTML = x.innerHTML + new Date(' . $data . ');
</script>
';
1381324693000
ВРЕМЯ ТЕКУЩЕГО СЕРВЕРА: Wed Oct 09 2013 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
очень просто:
new Date("<?= date('Y/m/d H:i:s'); ?>");