JodaTime: преобразовать локальную неоднозначность в UTC

Я пытаюсь преобразовать локальную дату в UTC, используя Joda Time. Код, который я использовал, показан ниже, и он прекрасно работает.

Date localDate = new Date();
System.out.println("Local Date : " + localDate);

DateTimeZone tz = DateTimeZone.getDefault();
Date utcDate = new Date(tz.convertLocalToUTC(localDate.getTime(), false));
System.out.println("UTC Date : " + utcDate);

Output :  
Local Date : Wed May 29 11:54:46 EEST 2013
UTC Date : Wed May 29 08:54:46 EEST 2013

Но если я отправлю дату UTC в качестве параметра в DateTimeZone. convertLocalToUTC(), он также уменьшает час на 3. Однако, поскольку это дата UTC, я ожидаю, что она больше не будет преобразовывать дату. Это ошибка или я что-то упускаю?

Date localDate = new Date();
System.out.println("Local Date : " + localDate);

DateTimeZone tz = DateTimeZone.getDefault();
Date utcDate = new Date(tz.convertLocalToUTC(localDate.getTime(), false));
System.out.println("UTC Date : " + utcDate);

Date utcDate2 = new Date(tz.convertLocalToUTC(utcDate.getTime(), false));
System.out.println("UTC Date 2 : " + utcDate2);

Output : 
Local Date : Wed May 29 11:54:46 EEST 2013
UTC Date : Wed May 29 08:54:46 EEST 2013
UTC Date 2 : Wed May 29 05:54:46 EEST 2013

person Parvin Gasimzade    schedule 29.05.2013    source источник


Ответы (2)


Согласно javadoc от convertLocalToUTC

Преобразует местное время в стандартное время UTC с тем же местным временем. Это преобразование используется после выполнения расчета, в котором расчет был выполнен с использованием простой локальной зоны.

Методы не делают предположений или проверок того, что переданная дата находится в UTC или нет, она всегда считает переданную дату локальной и преобразует ее в UTC. Вывод вашей программы правильный.

person harsh    schedule 29.05.2013

Посмотрите на это с точки зрения convertLocalToUTC() методов. Это просто long и boolean. Он не знает, сколько времени вы проходите, UTC или нет. Предполагается, что вы передаете long по местному времени, и соответствующим образом настраиваете его.

person rgeorge    schedule 29.05.2013