我曾尝试将指定日期Mon Jul 04 00:00:00 IST 2011
转换为GMT,如下所示:2011-07-04 18:10:47 GMT+00:00 2011
但显示3/7/11 6:30 PM
这是我的代码:
java.text.SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.text.SimpleDateFormat res_format = new SimpleDateFormat("dd/mm/yyyy HH:mm");
java.util.Date date1 = format.parse("2011-07-04 00:00:00");
DateFormat gmtFormat = new SimpleDateFormat();
TimeZone gmtTime = TimeZone.getTimeZone("GMT+00");
gmtFormat.setTimeZone(gmtTime);
System.out.println("Current Time: "+date1);
System.out.println("Time:"+gmtFormat.format(date1));
答案 0 :(得分:2)
这对我有用:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
public class TZ {
public static void main(String[] args) throws ParseException {
java.text.SimpleDateFormat sourceFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZ yyyy");
java.text.SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss zzzz");
java.util.Date date1 = sourceFormat.parse("Mon Jul 04 00:00:00 IST 2011");
TimeZone gmtTime = TimeZone.getTimeZone("GMT+00");
gmtFormat.setTimeZone(gmtTime);
System.out.println("Source date: " + date1);
System.out.println("gmt:" + gmtFormat.format(date1));
}
}
答案 1 :(得分:0)
代码更改最少的快速解决方案是替换:
DateFormat gmtFormat = new SimpleDateFormat();
要:
SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
答案 2 :(得分:0)
你的想法是正确的。如果你再费心去查看代码,你就会知道你做错了什么。
您的代码运行正常。但是你没有看到你想要的东西,因为你(最有可能)初始化了
java.text.SimpleDateFormat res_format = new SimpleDateFormat("dd/mm/yyyy HH:mm");
输出
并且您使用全新的SimpleDateFormat
,突然设置时区并显示。
如果你改变了
DateFormat gmtFormat = new SimpleDateFormat();
到
java.text.SimpleDateFormat gmtFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm zz");
你得到了你想要的东西。
(请注意格式的变化。它是dd/MM/yyyy
而不是dd/mm/yyyy
)
如果您对块进行了逻辑分组,并且没有为(几乎)所有类使用完全限定名称,那么您的代码(对您和其他人)将更容易阅读
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2011-07-04 00:00:00");
SimpleDateFormat gmtFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm zz");
TimeZone gmtTime = TimeZone.getTimeZone("GMT+00");
gmtFormat.setTimeZone(gmtTime);
System.out.println("Current Time: " + date);
System.out.println("Time:" + gmtFormat.format(date));