我想将时间戳Wed, 20 Feb 2013 11:41:23 GMT
转换为2013-02-20T11:41:23Z
。我怎样才能做到这一点?我想要UTC格式的ISO-8601(2013-20-02T04:51:03Z)。
我的代码在
下面Date date=new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
String strDate = date.toString();
Date dt = formatter.parse(strDate );
System.out.println("Date " +dt);
输出是:
Exception in thread "main" java.text.ParseException: Unparseable date: "Wed Feb 20 03:50:03 PST 2013"
答案 0 :(得分:3)
你的格式有什么不对,请使用: “EEE MMM dd HH:mm:ss Z yyyy”这就是出现异常的问题,在你有“EEE,dd MMM yyyy HH:mm:ss Z”的问题中 for Wed,2013年2月20日11:41:23 GMT
尝试:
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat(
"EEE MMM dd HH:mm:ss Z yyyy");
String strDate = date.toString();
Date dt = null;
try {
dt = formatter.parse("Wed Feb 20 03:50:03 PST 2013");
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("Date " + dt);
System.out.println(new Timestamp(new Date().getTime()));
答案 1 :(得分:1)
考虑使用Joda Time,它内置支持解析和输出ISO格式的日期字符串。
new DateTime(DateTimeZone.UTC).toString()
答案 2 :(得分:0)
您需要2个DateFormatters,一个用于解析,一个用于输出。你有一个输出。
编辑:输出的工作原理如下:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
String output = formatter.format(new Date());
System.out.println("Date " + output);
答案 3 :(得分:0)
DateFormat format = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss'Z'");
format.setTimeZone (TimeZone.getTimeZone ("UTC"));
Date date = new Date ();
System.out.println ("Date is: " + format.format (date));
答案 4 :(得分:0)
您已有Date
个对象。您只需要format
到String
。
formatter.format(date)
构造函数中的模式有效, SimpleDateFormat
应该会为您提供所需的结果。
通过上面的实现,您的代码如下所示:
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
String dt = formatter.format(date);
System.out.println("Date " + dt);
这会产生类似 - Date 2013-02-20T17:39:45Z
的输出。