2013-06-19 4 views
0

У меня есть следующий код PHP, который предназначен для форматирования текущей даты и времени:время PHP() возвращает эпоху вместо текущего времени

$rawdatetime = time(); 
$datetime = date('Y-m-d', $rawdatetime) . 'T' . date('H:i:s', $rawdatetime) . '.000Z'; 
$this->debug($datetime); 

форматирование, кажется, работает хорошо, но продолжает выводить, что это 1970; Я получаю следующий вывод:

1970-01-01T00:00:00.000Z 

Я думаю, что мой сервер не настроен должным образом, но мой поиск Google не дал мне никаких подсказок. Я использую WAMP, если это помогает.

Заранее благодарим за любой совет, который у вас может быть.

EDIT: кажется, что функции даты и времени работают правильно; но назначение их переменной - вот в чем проблема. Любая работа вокруг, чтобы получить то же форматирование, что и выше, будет приветствоваться. Но я также хотел бы знать, почему эта проблема происходит.

+2

FYI: Шаг экономии времени() в переменной является излишним, это то, что дата() по умолчанию использует. Попробуйте простое эхо-время(), что вы получаете? – Jessica

+0

Что делает 'var_dump (time()),' yield? – GordonM

+0

Спасибо, Джессика, но есть очень небольшой шанс, что если он будет работать около полуночи, дата и время не совпадут, если я сделаю это по-своему. – TheCatWhisperer

ответ

1

Во-первых, вам не нужно использовать time() вообще здесь, потому что date() будет использовать текущее время в качестве значения по умолчанию, если вы не передать значение этого параметра.

Во-вторых, вы используете два отдельных вызова date(), разделенных "T". Обратите внимание, что форматирование для date() может принимать жесткий код, такой как T; вам просто нужно избегать их с помощью обратных косых черт, поэтому вам не нужно разделить его на два вызова функций.

Ваш весь код может выглядеть следующим образом:

$datetime = date('Y-m-d \T H:i:s.\0\0\0\Z'); 

Что дает 2013-06-19 T 11:18:53.000Z

+0

Спасибо, это сработало отлично. Но мне все еще интересно, почему это не сработало, когда я использовал другой подход. – TheCatWhisperer

+0

Что-то подсказывает мне, что у вас только что была опечатка в вашем реальном коде в имени переменной $ $ rawdatetime, а неопределенный var был равен нулю –

+0

да, это звучит как опечатка. У PHP могут быть свои недостатки, но у него, конечно же, нет таких основных проблем обработки переменных, которые вы описываете. У него было бы все, если бы у него была такая проблема. – Spudley

0

Он отлично работает для меня (при эхом, вместо $this->debug). Таким образом, либо у вас есть некорректная версия PHP, либо проблема не в вашем примере кода. Это то, что я сделал:

<?php 

$rawdatetime = time(); 
$datetime = date('Y-m-d', $rawdatetime) . 'T' . date('H:i:s', $rawdatetime) . '.000Z'; 
echo $datetime,"\n"; 
Смежные вопросы