Java函数Date()返回GMT-00时区的值,但I';我在格林尼治时间3点

Java函数Date()返回GMT-00时区的值,但I';我在格林尼治时间3点,java,datetime,Java,Datetime,我必须在MySQL数据库中写入datetime: 我需要一个简单的例子: this.repes.get(parcelaIdx).setFechaCosecha(new Date()); 但是因为日期提前了三个小时!!,所以是GMT-00,我现在是GMT-03(阿根廷) 如何获取当前和本地机器的日期和时间 编辑:为了澄清,只需一点代码: import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util

我必须在MySQL数据库中写入datetime: 我需要一个简单的例子:

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) );
    }
}
}
导入java.text.DateFormat;
导入java.text.simpleDataFormat;
导入java.util.Date;
导入java.util.TimeZone;
公共类所有时区{
公共静态void main(字符串参数[]){
字符串[]AllID=TimeZone.getAvailableIDs();
日期myDate=新日期();

对于(int i=0;i日期对象不支持时区,它们只是“特定的时间瞬间”。
只要您需要日期和时区信息,就可以使用它们


p.S:我建议,无论何时向数据库写入时间,都应始终以GMT/UTC格式写入。因此,使用new Date()将以该格式(GMT+0)提供。稍后,当您从数据库中检索时间并向客户端显示时,将其适当转换。

日期对象不支持时区,它们只是“特定的时间瞬间”.
当您需要日期和时区信息时,请使用



p.S:我建议,无论何时向数据库写入时间,都应使用GMT/UTC格式。因此,使用new Date()将以该格式(GMT+0)给出已经存在。稍后,当您从数据库中检索它并向客户端显示时,将其适当地转换。

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

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

所以我需要的是传递日期()函数,即使我只想存储在数据库中?不。在从数据库中获取日期后,您需要使用适当的时区显示它。因此,我需要的是传递日期()函数,即使我只想存储在数据库中?不。在从数据库中获取日期后,您需要使用适当的时区来显示它。好的,问题是我不需要时区信息,我要的是当前时间戳,我写入数据库的地方,明显是本地时间!!@Nicolas400好的,我要的是每当您向数据库写入时间时,ys建议以GMT/UTC格式写入。因此,使用new Date()将以该格式提供。稍后,当您从数据库中检索并向客户端显示时,请将其适当地转换。让我看看是否得到它。当我向数据库写入时间时,我的本地时间是GMT-3,仅使用日期(),日期字段中的值存储在GMT-0中,当我使用Java客户端读取它时,我会将其转换为GMT-3,但是如果使用其他工具查询表,我会在GMT-0中看到它???@Nicolas400完美。只是一个小点。虽然Date()对象不存储时区信息,但它的toString()方法使用当前时区根据当前GMT-3格式显示时间(请参见Date.toString())。请注意,Date对象仍然存储时间,而没有任何TZ信息,它只是临时使用toString()中的当前TZ要转换为人类可读的stringhi@suraj Chandran,我运行了一个测试,尽管我尝试用GMT-3写入数据库,但它总是存储在GMT-0中…但是如果我想存储在另一个GMT中?我应该在数据库字段类型中从日期更改为字符串或数字吗?好的,问题是我不需要时区信息,我需要当前的time stamp,我写入数据库的地方,明显是本地时间!!@Nicolas400好的,每当你以GMT/UTC格式写入数据库时,我都会给出建议。所以使用new Date()将以该格式提供。稍后,当您从DB中检索它并向客户端显示时,请适当地转换它。因此,让我看看是否得到它。我的localtime是GMT-3,当我写入DB时,仅使用Date(),日期字段中的值存储在GMT-0中,当我使用Java客户端读取它时,我会将其转换为GMT-3,但是如果使用其他工具查询表,我会在GMT-0中看到它???@Nicolas400完美。只是一个小点。虽然Date()对象不存储时区信息,但它的toString()方法使用当前时区根据当前GMT-3格式显示时间(请参见Date.toString())。请注意,Date对象仍然存储时间,而没有任何TZ信息,它只是临时使用toString()中的当前TZ要转换为人类可读的stringhi@suraj Chandran,我运行了一个测试,尽管我尝试用GMT-3写入数据库,但它总是存储在GMT-0中……但是如果我想存储在另一个GMT中,我应该在数据库字段类型中从日期改为字符串或数字吗?多亏了all。对于clarufy,这里有一个小代码:多亏了all。多亏了clarufy的东西,这里有一个小代码: