我正在使用以下代码行来转换从php文件恢复的unix时间,但日期显示不正确:

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

我不知道怎么了。

有没有人熟悉这个问题?

最佳答案

这段代码是错误的:

long timestamp = unixTime * 1000;


unixTime是一个10位整数,乘以1000,结果超过了最大整数,因此unixTime * 1000得出错误的结果。您应该将unixTime转换为long,如下所示:

long unixTime = Long.parseLong(inputjson[2].getString((Integer) x.get(j)));

07-24 09:36