Я хочу проанализировать значение времени, отформатированное как "12:34:56"
, которое поступает из внешнего веб-сервиса, в Date
, Calendar
или что-либо, что позже я могу сравнить с текущим временем.
Проблема в том, что в Android DateFormat.parse
, кажется, игнорирует часовой пояс пользователя по умолчанию и анализирует значение, как если бы оно было в UTC. Учитывая этот код:
DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
String inTime = "12:34:56";
Date time = timeFormat.parse(inTime);
Date now = new Date();
Я получаю желаемый результат на своем рабочем столе (Java 1.6.0_29):
Thu Jan 01 12:34:56 CET 1970
Mon Nov 21 20:53:04 CET 2011
Другими словами, строка «12:34:56» анализируется в часовом поясе по умолчанию. Тем не менее, на Android это, кажется, анализируется в UTC, потому что это один час:
Thu Jan 01 11:34:56 GMT+0100 1970
Mon Nov 21 20:53:02 GMT+0100 2011
Я даже пытался установить часовой пояс с помощью timeFormat.setTimeZone(TimeZone.getDefault())
, но это не помогает. Есть ли способ заставить DateFormat.parse
анализировать время в часовом поясе по умолчанию (пользовательском) на Android, или мне нужно преобразовать все в UTC и обратно, чтобы оно заработало?