我尝试将当地时区的转换日期转换为GMT,我做了类似的事情
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
String gmtStrDate = sdf.format(Calendar.getInstance().getTime());
System.out.println("GMT 1"+gmtStrDate);
Date gmtDate = sdf.parse(gmtStrDate);
System.out.println("GMT 2"+gmtDate);
格林威治标准时间格林威治标准时间格林威治标准时间为1 o / p但是GMT 2 o / p再次变为当地时区...可以告诉我为什么?
在GMT中获得GMT 2 o / p我确实喜欢这样:
日历日历= Calendar.getInstance(TimeZone.getTimeZone(“GMT”)); calendar.setTime(GMTDATE);
System.out.println("GMT 3 = "+calendar.getTime());
但GMT 3o / p仍在本地tz。请在此建议。
答案 0 :(得分:15)
import java.util.*;
import java.text.*;
public class CurrentTimeToGMT{
public static void main(String args[]){
Date date = new Date();
DateFormat gmtFormat = new SimpleDateFormat();
TimeZone gmtTime = TimeZone.getTimeZone("GMT");
gmtFormat.setTimeZone(gmtTime);
System.out.println("Current Time: "+date);
System.out.println("GMT Time: " + gmtFormat.format(date));
}
}
<强>输出强>
Current Time: Wed Mar 10 11:21:18 IST 2010 GMT Time: 3/10/10 5:51 AM
答案 1 :(得分:2)
在“解析”之后,您必须在打印前再次格式化,例如:
System.out.println("GMT 2"+sdf.format(gmtDate));
修改强>
原因是您的gmtStrDate
不存储任何时区信息
答案 2 :(得分:0)
您可以使用此功能执行此操作,例如您要将本地时间转换为格林尼治标准时间,也就是格林尼治标准时间+6或格林尼治标准时间+5 然后只需使用此功能。该函数将返回答案。
public String getCurrentDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd hh:mm a zzz");
Date date = new Date();
sdf.setTimeZone(TimeZone.getTimeZone("GMT+6:00"));
return sdf.format(date);
}