Ошибка создания даты Java в php - PullRequest
0 голосов
/ 21 июля 2011

Я пытаюсь создать функцию php, которая преобразует строковую дату в Java-дату для передачи в Java.Мне нужно использовать 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 (для 2011-07-01), java (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] => 
)

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Похоже на причудливый вариант Y2K (у вас нет 1900 лет). Вы можете исправить это, вычтя 1900 лет из $date['year'], но мне интересно, не лучше ли вам использовать strtotime и просто передать временную метку, тем более что Date(int year, int month, int day) является устаревшим .

1 голос
/ 21 июля 2011

Очевидно, он рассматривает год, который должен начаться в 1900 году. Поэтому вычтите 1900, когда вы проходите год.

...