Вопрос по java, php – Как преобразовать метку времени Java в метку времени php?

7

Как я могу преобразовать метку времени Java, как этот1335997853142 в формате, который может прочитать php? 1335997853142 должно быть02 May 2012 22:30:53.

Но что бы я ни пытался, я получаю ошибки или PHP говорит1970-01-01 01:00:00 или же2038-01-19 04:14:07

ПОЖАЛУЙСТА, помогите !!! Я ищу решение более чем на 1,5 часа!

@Torious: не хочу использовать java - я преобразую 1220 значений из XML-файла с php в mysql user1373728
использованиеjava.util.Calendar, Это все, что вы получите за этот великий вопрос. Torious
Метка времени Java - это миллисекунды от времени Linux, php - секунды от времени Linux. Разделите время Java на 1000, чтобы получить время php. Jordonias

Ваш Ответ

8   ответов
0
0

использование

$time = date("whatever you need", $javatime / 1000);
Error: User Rate Limit Exceeded user1373728
1

когда она должна быть в секундах

$java_time = 1335997853142;
$php_time = $java_time / 1000;
$today = date("d M Y G:i:s", $php_time);

Выход

02 May 2012 22:30:53
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded user1373728
Error: User Rate Limit Exceeded
1

что U должен удалить 3 последних номера. Не используйте деление, потому что он вернет число с плавающей точкой.

8

echo gmdate("d M Y H:i:s",1335997853);

Что выводит02 May 2012 22:30:53.

Error: User Rate Limit Exceeded user1373728
6

эпоха (1970-01-01 00:00:00 по Гринвичу)

КоторыйPHP поддерживает тоже кроме как в секундах, поэтому в php должно работать следующее:

date('choose your format', javaMilliseconds / 1000);
Error: User Rate Limit Exceeded
1

Метка времени Java: 1396959462222

PHP timestamp: 1396959462

Деление на 1000 не дает абсолютно правильного ответа, потому что оно даст двойное значение или значение с плавающей запятой, то есть 1396959462.222, а это не то, что мы хотим. Здесь нам нужно целое число, например 1396959462. Поэтому правильным способом преобразования метки времени Java в метку времени PHP было бы использование intval ():

$php_timestamp = intval($java_timestamp/1000);

В реальном примере, в одном из моих приложений для Android, где я отправляю метку времени Java на сервер PHP, я делаю это, как указано выше. Кроме того, для обеспечения безопасности я добавляю preg_replace (), чтобы убедиться, что кто-то добавил код взлома в это поле, он удален:

$php_timestamp = intval(preg_replace('/[^0-9]/', '', $java_timestamp)/1000);
1

д, поэтому разделите на 1000:

  print(date("r", 1335997853142/1000)

Похожие вопросы