【问题标题】:Error creating Java Date in php在 php 中创建 Java 日期时出错
【发布时间】:2011-07-21 02:59:35
【问题描述】:

我正在尝试创建一个将字符串日期转换为 java 日期以传递给 java 的 php 函数。我的应用程序需要使用 java.sql.Date 而不是 java.util.Date。但是这个简单的函数给出了一个奇怪的结果:

function makeStrJavaDate($date){
    $date = date_parse($date);
    $date = new Java("java.sql.Date",$date['year'], $date['month']-1, $date['day']);
    return $date;
}

java 返回的日期年份错误:php (For 2011-07-01), java(Jul 1, 3911)。

有什么问题可以指点一下吗?

仅供参考,php 正在正确解析它:

Array
(
    [year] => 2011
    [month] => 7
    [day] => 1
    [hour] => 
    [minute] => 
    [second] => 
    [fraction] => 
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 
)

【问题讨论】:

  • 请在date_parse 之后和new Java 之前print_r($date) 向我们展示输出。
  • 只是想一想,java时间戳不是unix时间戳的毫秒版本吗?所以如果你在php中获取时间戳,在末尾加000,然后发送给java。或者反之亦然,一旦您从 java 程序收到它,在 php 中除以 1000。我不确定这是否可行,但值得一试。

标签: java php php-java-bridge


【解决方案1】:

显然,它正在考虑从 1900 年开始的年份。所以当你过了这一年时减去 1900 年。

【讨论】:

    【解决方案2】:

    它看起来像是 Y2K 的一个奇异变体(你已经离开了 1900 年)。您可以通过从 $date['year'] 中减去 1900 年来解决此问题,但我想知道您是否最好使用 strtotime 并仅传递时间戳,特别是因为 Date(int year, int month, int day)deprecated

    【讨论】:

      猜你喜欢
      • 2015-10-07
      • 1970-01-01
      • 2013-01-07
      • 2015-02-26
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      相关资源
      最近更新 更多