0

文字列の日付を Java の日付に変換して Java に渡す PHP 関数を作成しようとしています。アプリケーションに java.util.Date ではなく java.sql.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 (2011 年 7 月 1 日)、java (3911 年 7 月 1 日)。

何が間違っているかについての指針はありますか?

参考までに、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']使用して渡すだけの方がよいのではないかと考えています。strtotimeDate(int year, int month, int day)

于 2011-07-21T03:17:37.013 に答える