如何将Java时间戳转换为PHP时间戳?

8
如何将类似于Java时间戳 1335997853142 转换为 PHP 可读取的格式呢?无论我尝试什么方法,都会出现错误或者 PHP 显示 1970-01-01 01:00:00 或者 2038-01-19 04:14:07。请帮忙!我已经搜索了一个半小时还是没有找到解决方案!

1
使用 java.util.Calendar。这就是你得到的关于这个伟大问题的全部内容。 - Torious
1
Java的时间戳是从Linux时间开始计算的毫秒数,而PHP的时间戳则是从Linux时间开始计算的秒数。要将Java时间转换为PHP时间,只需将Java时间除以1000即可。 - Jordonias
@Torious:不想使用Java - 我正在使用PHP将1220个值从XML文件转换到MySQL。 - user1373728
8个回答

8

PHP时间戳是以秒为单位,而不是毫秒。

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

这将输出2012年5月2日22:30:53


该死!!好了,现在所有的解决方案都可以使用了!谢谢!问题是:字符串中有空格(不知道为什么!)。在 trim() 后一切正常。对不起,伙计们,但还是要感谢你们! - user1373728

6

这不是Java时间戳,而是自纪元(1970年01月01日00时00分00秒GMT)以来的毫秒数。

PHP也支持此功能,但单位为秒,因此以下代码可用于PHP:

date('choose your format', javaMilliseconds / 1000);

正如Mark Reed所说的那样,还要使用date_default_timezone_set("UTC");。 - pstanton

2

日期/时间: 2014年4月8日12:17:42pm UTC

Java时间戳: 1396959462222

PHP时间戳: 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

Java会给你一个以毫秒为单位的时间戳。PHP使用Unix秒,所以需要除以1000:

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

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

这个程序相关的内容翻译成中文:对于数组中的所有值,返回值为:1970年1月25日20:31:23。 - user1373728
我丢失了一些分号,现在已经修复 - Jordonias
你确定你正在正确地从 XML 中检索条目吗? - Jordonias

1
日期需要一个整数格式的时间戳。所以我认为您应该删除最后3个数字。不要使用除法,因为它会返回浮点数。

0

0

这是一个微秒级别的时间戳

用法

$time = date("whatever you need", $javatime / 1000);

我用了这个代码: date('Y-m-d H:i:s', $values['date'] / 1000); // 1970-01-25 21:31:23 这个代码: date('Y-m-d H:i:s', (int) $values['date'] / 1000) // 1970-01-25 21:31:23 这个代码: date('U = Y-m-d H:i:s', (int) $values['date']) // 2038-01-19 04:14:07 这个代码: date('U = Y-m-d H:i:s', (int) $values['date']) // 警告:date() 函数的第二个参数应为长整型到底是怎么回事?! - user1373728

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接