Я проанализировал a java.util.Date
от a String
но это устанавливает зону местного времени как часовой пояс date
объект.
Часовой пояс не указан в String
от которого Date
анализируется. Я хочу установить определенный часовой пояс date
объект.
Как я могу сделать это?
Использовать DateFormat. Например,
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = isoFormat.parse("2010-05-23T09:01:02");
Имейте в виду, что объекты java.util.Date
сами по себе не содержат никакой информации о часовом поясе - вы не можете установить часовой пояс для объекта Date
. Единственное, что содержит объект Date
, - это количество миллисекунд, прошедшее с «эпохи» - 1 января 1970 года, 00:00:00 UTC.
Как показывает ZZ Coder, вы устанавливаете часовой пояс в объекте DateFormat
, чтобы указать ему, в каком часовом поясе вы хотите отображать дату и время.
java.util.Calendar
- это обычный способ обработки часовых поясов с использованием только классов JDK. Apache Commons имеет несколько дополнительных альтернатив / утилит, которые могут быть полезны. Править Заметка Спонга напомнила мне, что я слышал действительно хорошие вещи о Joda-Time (хотя сам не использовал).