Преобразование даты Unix из php в Java (Android) - PullRequest
0 голосов
/ 09 декабря 2011

Я использую следующие строки кода для преобразования Unix-времени, которое я получаю из php-файла, но даты отображаются неправильно:

int unixTime = new Integer( inputjson[2].getString((Integer) x.get(j)) ).intValue(); 
long timestamp = unixTime * 1000;  // msec  
java.util.Date d = new java.util.Date(timestamp); 

Вот выдержка из файла php:

date_default_timezone_set('America/New_York');
while($row1 = mysql_fetch_array($result1)) {
   $output1[]=$row1['text'];
   $temp = $row1['dateOfStatus']; 
   $d = strtotime($temp);
   $output5[] = $d; 
}

Я подтвердил, что поле dateOfStatus в базе данных является правильным. Однако, когда я возвращаю это значение обратно в java и выполняю преобразование, даты выключаются: то есть, сегодня в 11:11 возвращается: TUE Jan 06 05:41:12 EST 1970.

Я не уверен, что происходит не так.

Кто-нибудь знаком с этой проблемой?

1 Ответ

2 голосов
/ 09 декабря 2011

Этот код неверен:

long timestamp = unixTime * 1000;

unixTime - это целое число с 10 цифрами, при умножении на 1000 результат превышает максимальное целое число, поэтому unixTime * 1000 получает неправильный результат.Вы должны конвертировать unixTime в long, вот так:

long unixTime = Long.parseLong(inputjson[2].getString((Integer) x.get(j)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...