2

这在PHP中有什么区别

echo strtotime("2013-08-30");

这在Java中

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("2013-08-30");
System.out.println(date.getTime());

这最后不应该给我相同的数字吗?

编辑

例如在这种情况下,PHP 给出:1377838800

而Java给出:1377838800000

就像 PHP 在途中的某个地方丢失了几个零

4

3 回答 3

3

PHP strtotime()

  • 将任何英文文本日期时间描述解析为Unix 时间戳

Unix时间戳:

  • 自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数

这个

echo strtotime("2013-08-30");

将返回1377835200


Java Date.getTime()

  • 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

这个

System.out.println(date.getTime());

将返回1377831600000

这意味着你应该执行

System.out.println(date.getTime() / 1000);

此外,如果出现差异,请检查您的时区。

于 2013-08-30T14:18:02.883 回答
2

不。如文档所述,strtotime返回自 Unix 纪元以来的秒数;Date.getTime返回自 Unix 纪元以来的毫秒数。

此外,您可能会注意到 Java 和 PHP 使用的默认时区存在差异。SimpleDateFormat(如果要使用特定的时区,可以设置 a 的时区。)

于 2013-08-30T14:12:13.650 回答
1

我不熟悉 Java,但strtotime()PHP 中的函数非常擅长理解以几乎任何有意义的格式编写的日期并返回日期对象。我会假设 Java 对您可以输入哪些输入以获得所需的结果要严格得多。

来自strtotime 上的 PHP 文档(http://php.net/manual/en/function.strtotime.php ):

<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>

所有这些都将返回一个有效日期。

于 2013-08-30T14:07:50.880 回答