Разбор даты от строки к длинной дает неверный результат - PullRequest
5 голосов
/ 06 декабря 2011

Я получил простой код, возможно, проблема в заданной строке формата или часовом поясе.Итак, вот код:

public static void main(String[] args) {
    SimpleDateFormat df = new SimpleDateFormat("HH:mm");
    try {
        Date added = df.parse("00:00");
        System.out.println(added);
        System.out.println(added.getTime());
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Результат: Чт 01 января 00:00:00 EET 1970 -10800000 -> должно быть 0, поскольку мы даем 00:00 часов и другие элементы времениоставайтесь по умолчанию.

// Редактировать

Да, проблема в часовом поясе, чтобы исправить это, используйте df.setTimeZone (TimeZone.getTimeZone ("UTC"));до разбора.

Ответы [ 3 ]

2 голосов
/ 06 декабря 2011

Значение 10800000 составляет ровно 3 часа (в миллисекундах), которое я собираю примерно равным смещению между EET и UTC (на самом деле, это только 2 часа в соответствии с этим , но я предполагаю, что дополнительныечас до летнего времени или около того).

Следовательно, разница, вероятно, связана с вашим часовым поясом.

2 голосов
/ 06 декабря 2011

Ваш часовой пояс, кажется, EET.Эта разница будет смещением от 1 января 1970 г. 00: 00: 00.000 UTC

0 голосов
/ 06 декабря 2011

Поскольку вы не указали дату, только час, вы фактически создали объект Date со значениями по умолчанию, как указано в DateFormat API (который реализует SimpleDateFormat):

Дата представляется в виде объекта Date или в миллисекундах с 1 января 1970 г., 00:00:00 GMT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...