我有以下代码:
SimpleDateFormat format=new SimpleDateFormat("yyyy.MM.dd HH:mm");
try {
Date date=format.parse("2012.9.11 02:00");
Log.i("date", date.toGMTString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("exception", e.getMessage());
}
但我收到的消息是:“2012年9月10日22:00:00 GMT”,即错误的日期。我该如何解决?
答案 0 :(得分:1)
IS 正确的日期。它是根据您的GMT偏移计算的。
要按照11-Sep-2012 02:00:00
使用date.toLocaleString()
(不建议使用的方法)
或者您可以使用Calendar课程打印日期:
SimpleDateFormat format=new SimpleDateFormat("yyyy.MM.dd HH:mm");
Date date=format.parse("2012.09.11 02:00");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println(format.format(cal.getTime()));
打印:2012.09.11 02:00
您可以查看http://www.vogella.com/articles/JavaDateTimeAPI/article.html了解更多信息
答案 1 :(得分:0)
您正在打印date.toGMTString()
,因此您将获得“10月2012 22:00:00 GMT”,这不是错误的字符串,而是格林威治标准时间的日期。请注意,toGMTString已弃用。
如果您想以格式打印日期,可以
Log.i("date", format.format(date));
如果您不想获得补充“0”,请使用
format=new SimpleDateFormat("yyyy.M.d HH:mm");
答案 2 :(得分:0)
根据JavaDoc,date.toGMTString()
是不推荐使用的方法。
使用弃用方法并不是一种好习惯。
使用date.toString()
代替date.toGMTString()
。
或
format.format(date);
答案 3 :(得分:0)
不推荐使用方法toGMTString()
。
但是,至于解释,您可能处于不同的时区,因此具有不同的区域设置。
尝试使用date.toLocaleString()
替换正确输出,尽管也是不推荐使用的方法。
答案 4 :(得分:0)
这是不正确的,因为您正在使用date.toGMTString()
尝试输出变量date
,您就能看到正确的时间!