Java中如何将格式化字符串解析为日期对象
在Java中,如何将“Wed,Jun 2013 00:48:12 GMT”解析为日期对象,然后以相同格式打印日期对象 我试过这个:Java中如何将格式化字符串解析为日期对象,java,date-format,Java,Date Format,在Java中,如何将“Wed,Jun 2013 00:48:12 GMT”解析为日期对象,然后以相同格式打印日期对象 我试过这个: String dStr= "Wed, 05 Jun 2013 00:48:12 GMT"; SimpleDateFormat ft = new SimpleDateFormat ("E, dd MMM yyyy hh:mm:ss ZZZ"); Date t = ft.parse(dStr); System.out.println(t); System.ou
String dStr= "Wed, 05 Jun 2013 00:48:12 GMT";
SimpleDateFormat ft = new SimpleDateFormat ("E, dd MMM yyyy hh:mm:ss ZZZ");
Date t = ft.parse(dStr);
System.out.println(t);
System.out.println(ft.format(t));
结果是Wed Jun 05 10:48:12 EST 2013
Wed, 05 Jun 2013 10:48:12 +1000
提前感谢:看起来您想要的是
zzz
而不是zzz
。这将有助于你将时区作为代码而不是数字来读/写。你没有错误,两个都是:Wed,2013年6月5日00:48:12 GMT
和Wed,2013年6月5日00:48:12 GMT
代表同一时间,第一个是GMT(格伦威奇),第二个是澳大利亚的同一时间(EST),您只需要正确配置时区
如果要以GMT打印相同的日期,请将此行添加到代码中:
ft.setTimeZone(TimeZone.getTimeZone("GMT"));
现在,如果您还希望将日期打印为“GMT”而不是“+0000”,请遵循@HewWolff answer(使用zzz而不是zzz)这就解决了您的问题:
import java.text.*;
import java.util.*;
public class DateIt{
public static void main(String [] args) throws Exception{
String dStr= "Wed, 05 Jun 2013 00:48:12 GMT";
SimpleDateFormat ft = new SimpleDateFormat ("E, dd MMM yyyy HH:mm:ss z");
Date t = ft.parse(dStr);
TimeZone gmt = TimeZone.getTimeZone("England/London");
ft.setTimeZone(gmt);
System.out.println(t);
System.out.println(ft.format(t));
}
}
呃,我以前遇到过这个问题
SimpleDateFormat.parse(String)
方法(我怀疑)使用了Calendar
的一个实例。这有两个原因:
当调用
ft.format(t)
时,这些默认值会产生影响。我发现解决这个问题的唯一方法是直接使用Calendar类(顺便说一句,这完全不是小事),我会在以后有更多时间时尝试提供一个代码示例。同时,看看javafx.util.converter.DateStringConverter
这真的会产生10个小时的差异吗,还是那段文字复制不好?@MartijnCourteaux不,它看起来只是在本地时区输出。啊,现在我明白了:)我把+100而不是+1000搞混了。这仍然需要一个小时…这里:System.out.println(“周三,2013年6月5日00:48:12 GMT”)代码>问题是:OP是希望输出使用原始输入字符串中的时区,还是使用固定时区(如GMT)?我想这可能是解决方案的一部分,但首先我们需要知道确切的问题。@Mattias Buelens,我打算在固定时区(如GMT)中输出原始输入字符串,我应该在这里使用什么日期和时间模式。预期结果应与“2013年6月5日星期三00:48:12 GMT”相同。谢谢。@user1304846使用Hew Wolff answer(打印GMT)和我的(将时区设置为GMT)@morgano,谢谢你的建议,我使用了下面提供的代码时钟,并在他的代码中将“z”替换为“zzz”,结果是“Wed,Jun 2013 12:48:12 GMT”,这与输入字符串“Wed,Jun 2013 00:48:12 GMT”不同“。这里还有什么建议吗?@user1304846在24小时格式中使用HH
而不是HH
。Clocks还指出,他将跟进自己的答案。谢谢,我使用您的代码,但结果是“Wed,05 Jun 2013 12:48:12 GMT”,这与输入字符串“Wed,05 Jun 2013 00:48:12 GMT”不同。这里有进一步的建议吗?第7行是否有“HH”而不是“HH”“HH”将以24小时表示法返回时间。你是对的,我使用了“HH”,在我将其更改为“HH”后,一切正常。非常感谢。