我希望当前日期在GMT明智的时区。我使用以下代码。
public static Date getGMTDate(String dateFormat) throws ParseException
{
SimpleDateFormat dateFormatGmt = new SimpleDateFormat(dateFormat);
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
// Local time zone
SimpleDateFormat dateFormatLocal = new SimpleDateFormat(dateFormat);
// Time in GMT
return dateFormatLocal.parse(dateFormatGmt.format(new Date()));
}
//调用上面的函数。
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = getGMTDate("yyyy-MM-dd HH:mm:ss");
当我更改设备日期时,时间以GMT格式显示,但日期不显示在GMT时区中。显示设备的日期。 但我想要当前的GMT日期。
答案 0 :(得分:5)
这可能有效
SimpleDateFormat dateFormatGmt = new SimpleDateFormat("dd:MM:yyyy HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(dateFormatGmt.format(new Date())+"");
指定格式,您将在GMT中获得格式!
编辑:您还可以查看This
答案 1 :(得分:1)
我改变了你的方法
public static String getGMTDate() {
DateFormat dateFmt = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.MEDIUM, SimpleDateFormat.MEDIUM);
dateFmt.setTimeZone(TimeZone.getTimeZone("GMT"));
// Time in GMT
return dateFmt.format(new Date());
}
得到以下日期(与我想要的相同)
07-18 10:41:54.525: D/test(6996): GMT Date is: **Jul 18, 2013 10:41:03 AM**
因此,只需调用此方法,它将以字符串格式返回GMT日期。
编辑1:
您正在设置GMT时区而不是GMT日期。您并不是想了解您的代码。当您致电new Data()
时,它会返回您的设备日期,然后您将其格式化为相应的GMT日期和时间。因此,如果您将设备日期更改为7月16日,那么您的代码(甚至我的代码)将返回相当于7月16日时间的GMT。如果您希望即使您的设备日期是2000年7月16日,也需要7月18日格林尼治标准时间,那么我认为您可以在没有从某个网络实体获取的情况下执行此操作。
编辑2:
你应该看this SO reference类似的问题,它可能对你有好处。
答案 2 :(得分:1)
输出:2016-08-01 14:37:48 UTC
final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
工作正常。