0

我试图创建一个将字符串日期转换为 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] => 
)
4

2 回答 2

1

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

于 2011-07-21T03:14:37.373 回答
1

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

于 2011-07-21T03:17:37.013 回答