我正在解析时间戳,这是一个字符串,如下所示:
Date receivedDateObj = new Date();
String inputDate = "Fri, 31 Dec 1999 23:59:59";
SimpleDateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
try {
System.out.println(inputDate);
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
receivedDateObj = formatter.parse(inputDate);
}catch (ParseException e) {
}
System.out.println(receivedDateObj);
日期被正确解析但是当我打印日期时,它会打印以下内容:
Fri Dec 31 18:59:59 EST 1999
如何让它打印GMT而不是EST?尽管我使用以下设置时区,为什么时区没有设置?
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
答案 0 :(得分:1)
java.util.Date
对象没有时区信息。这是一个固定的时间点。转储到控制台只使用Date.toString();
,它使用JVM的时区来执行格式化。如果您想要将固定的即时时间转换回特定时区的“人工”表示,请通过格式化板以其他方式将其发回。
System.out.println(formatter.format(receivedDateObj));
答案 1 :(得分:0)
我建议你使用joda time librairy。这个API包含一些漂亮的类来实现你愿意做的事:DateTimeFormat,DateTimeZone ......在我看来,它是java中最好的日期API。
javadoc非常详尽,网上有很多例子(当然包括stackoverflow)。
来源:http://www.joda.org/joda-time/
http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTimeZone.html
http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html