Функция Java Date () возвращает значения в часовом поясе GMT-00, но я в GMT -3 - PullRequest
0 голосов
/ 26 ноября 2011

Я должен написать datetime в базе данных MySQL: мне нужно просто, как это:

this.repes.get(parcelaIdx).setFechaCosecha(new Date());

Но поскольку дата впереди на три часа !!, так что это GMT -00, и я вGMT -03 (Аргентина).

Как узнать текущую и локальную машину и дату и время ??

Редактировать: , чтобы уточнить, просто небольшой код:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class AllTimeZones{
public static void main(String args[]){

    String[] AllID= TimeZone.getAvailableIDs();
    Date myDate = new Date();

    for(int i=0;i<AllID.length;i++)
    {
        System.out.println("TimeZone ["+(i+1)+"] ==>"+TimeZone.getTimeZone(AllID[i]));
        System.out.println("myDate sin TimeZone:" + myDate);

        DateFormat dfm = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");

        dfm.setTimeZone(TimeZone.getTimeZone(AllID[i]));
        System.out.println("myDate con TimeZone:" + dfm.format(myDate) );
    }
}
}

Ответы [ 2 ]

2 голосов
/ 26 ноября 2011

Объекты даты не поддерживают часовые пояса, они просто «определенный момент времени».
Когда вам нужна дата вместе с информацией о часовом поясе, используйте Календарь .

P.S: Я бы советовал всякий раз, когда вы записываете время в базу данных, всегда пишите в формате GMT ​​/ UTC. Таким образом, использование нового Date () даст в этом формате (GMT + 0) уже. А позже, когда вы получите его из БД и покажете клиенту, преобразуйте его соответствующим образом.

1 голос
/ 26 ноября 2011

Вот и мы снова. Дата не имеет часового пояса. Это мгновение во времени. Часовой пояс используется только тогда, когда он отображается в удобочитаемом формате. Измените способ отображения даты. Он построен правильно.

...