После DateTimeZone.convertLocalToUTC часовой пояс по-прежнему показывает локальный

Я использую DateTimeZone.convertLocalToUTC для преобразования местного времени в UTC. Время изменено правильно, но после преобразования информация о часовом поясе по-прежнему указывает исходный местный часовой пояс. Пожалуйста, обратитесь к приведенному ниже примеру кода

Date gmttime = new Date(tz.convertLocalToUTC(System.currentTimeMillis(),false));
System.out.println(gmttime.toString());

Вывод: среда, 16 октября, 12:58:19 IST 2013 г.

Обратите внимание, что значение выделено полужирным шрифтом, я ожидал, что это будет UTC . Пожалуйста, дайте мне знать, если я что-то упустил.


person Vinod Jayachandran    schedule 16.10.2013    source источник
comment
К вашему сведению, new Date устарел   -  person Maxim Shoustin    schedule 16.10.2013
comment
тогда какова альтернатива, если new Date() устарела?   -  person Vinod Jayachandran    schedule 16.10.2013
comment
Я имею в виду, что new Date(....) устарел. Смотрите мой ответ, который я разместил.   -  person Maxim Shoustin    schedule 16.10.2013


Ответы (3)


#Date.toString() напечатает дату в местном часовом поясе.

Используйте SimpleDateFormat для печати Date в формате для определенного TimeZone:

public static void main(String[] args) {
    Date date = new Date();
    SimpleDateFormat format = new SimpleDateFormat("E MMM  dd HH:mm:ss:SS z");
    format.setTimeZone(TimeZone.getTimeZone("UTC"));
    System.out.println(format.format(date));
}
person Kevin Bowersox    schedule 16.10.2013
comment
Время (ЧЧ:ММ:СС) отображается правильно в формате UTC, только часовой пояс печатается как местный. - person Vinod Jayachandran; 16.10.2013

Пытаться:

final Date date = new Date();
final String ISO_FORMAT = "E MMM dd HH:mm:ss zzz yyyy";
final SimpleDateFormat sdf = new SimpleDateFormat(ISO_FORMAT);
final TimeZone utc = TimeZone.getTimeZone("UTC");
sdf.setTimeZone(utc);
System.out.println(sdf.format(date));

Выход:

Wed Oct 16 08:53:50 UTC 2013
person Maxim Shoustin    schedule 16.10.2013

convertLocalToUTC Преобразует местное время в стандартное время UTC с тем же местным временем. http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTimeZone.html

person kai    schedule 16.10.2013