Я хотел был бы преобразовать дату, указанную в формате UTC
, к дате в формате CET
.Преобразование даты из UTC в CET
Проблема в том, что мне нужно добавить или вычесть часы соответственно.
Пример:
Date = "2015-07-31 01:14:05"
Я хотел бы, чтобы преобразовать его в немецкую дату (добавив два часа):
2015-07-31 03:14:05"
Мой код:
private static Long convertDateFromUtcToCet(String publicationDate) {
//"2015-07-31 01:14:05"
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
//SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
Date date = null;
try {
date = simpleDateFormat.parse(publicationDate);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.setTime(date);
Date givenDate = calendar.getTime();
System.out.println("Original UTC date is: " + givenDate.toString());
TimeZone timeZone = TimeZone.getTimeZone("CET");
calendar.setTimeZone(timeZone);
Date currentDate = calendar.getTime();
System.out.println("CET date is: " + currentDate.toString());
long milliseconds = calendar.getTimeInMillis();
return milliseconds;
}
Печатается:
Original UTC date is: Sat Jan 31 01:14:05 IST 2015
CET date is: Sat Jan 31 01:14:05 IST 2015
Вы не разобрать дату, время UTC, это, вероятно, вопрос –
Если вы посмотрите внимательно, вы можете увидеть на выходе, что пошло не так: при отсутствии разборной информации о часовом поясе во входной строке 'SimpleDateFormat' по умолчанию будет использоваться любой часовой пояс, в котором вы находитесь.' IST' в этом случае (так что вы либо в Ирелан d или в Индии, что должно служить предупреждением об использовании трехбуквенных сокращений часового пояса). – biziclop
Если вы используете Java8, ознакомьтесь с новым синтаксисом данных/календарей. Новый API намного легче понять и прост в использовании. –