Java函数Date()以GMT - 00时区返回值,但我是GMT -3

时间:2011-11-25 20:29:04

标签: java 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 个答案:

答案 0 :(得分:2)

日期对象不支持时区,它们只是“特定的即时时间”。
每当您需要日期和时区信息时,请使用Calendar代替。

P.S:我建议每当你给数据库写时间时,总是用GMT / UTC格式写。因此,使用新的Date()将以该格式(GMT + 0)提供。稍后当您从表单中检索它并向客户端显示时,它会进行适当的转换。

答案 1 :(得分:1)

我们再来一次。日期没有时区。这是一个瞬间。只有当它以人类可读的格式显示时,才会使用时区。更改日期显示方式。它的构造正确。