Я хочу конвертировать дату в "indies time". В частности: «Азия/Калькутта».Преобразование даты Java в другое время как формат даты
Код:
// TODO Auto-generated method stub
Date date=new Date();
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));
String dateString=simpleDateFormat.format(date);
System.out.println("Currect Date : " + dateString);
// This is returning a string and I want a date.
System.out.println("Wrong Output : "+simpleDateFormat.parse(dateString));
//This returns a Date but has incorrect result.
Вот выход из приведенного выше кода:
Correct Date : 2013-04-15 15:40:04
Wrong Output : Mon Apr 15 03:10:04 MST 2013
Я хочу ДАТУ, а не строки, но когда я получить дату, время 3:10
, и когда я получаю строку, я получаю 15:40:04
. Почему это не одно и то же?
Просто для добавления других объектов ... Объект Date просто представляет точку во времени и содержит ** ** ** Знания TZ, даже если вы, возможно, создали его с помощью объекта SimpleDateFormat, который ** ** знает о TZ. Всякий раз, когда вы конвертируете дату в ее строковое представление, необходимо использовать TZ, чтобы знать, как это должно быть показано. Поскольку Date не знает TZ, когда вы вызываете 'date.toString()', как вы это делали неявно, у него нет другого выбора, кроме как предполагать, что вы имеете в виду ** default ** TZ. Вы должны отформатировать его, используя SDF, который знает TZ вместо того, чтобы полагаться на метод toString() 'Date. – Blake