如何parsingdatestring到date?

如何将datestringparsing到Date对象中?

 String target = "Thu Sep 28 20:29:30 JST 2000"; DateFormat df = new SimpleDateFormat("E MM dd kk:mm:ss z yyyy"); Date result = df.parse(target); 

抛出exception…

 java.text.ParseException: Unparseable date: "Thu Sep 28 20:29:30 JST 2000" at java.text.DateFormat.parse(DateFormat.java:337) 

模式是错误的。 你有一个3个字母的date缩写,所以它必须是EEE 。 你有一个3个字母的月份缩写,所以它必须是MMM 。 由于那些date和月份缩写是区域敏感的,所以您希望明确指定SimpleDateFormat区域设置为英文,否则将使用平台默认语言环境,本身可能不是英语。

 public static void main(String[] args) throws Exception { String target = "Thu Sep 28 20:29:30 JST 2000"; DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH); Date result = df.parse(target); System.out.println(result); } 

这在这里打印

  Thu Sep 28 07:29:30 BOT 2000 

这是根据我的时区正确的。

如果你不喜欢使用HH而不是kk我也会重新考虑。 阅读javadoc ,了解有关有效模式的详细信息。

这是一个工作的例子:

 import java.text.ParseException; import java.text.SimpleDateFormat; import java.text.DateFormat; import java.util.Date; public class j4496359 { public static void main(String[] args) { try { String target = "Thu Sep 28 20:29:30 JST 2000"; DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss zzz yyyy"); Date result = df.parse(target); System.out.println(result); } catch (ParseException pe) { pe.printStackTrace(); } } } 

将打印:

 Thu Sep 28 13:29:30 CEST 2000 
 new SimpleDateFormat("EEE MMM dd kk:mm:ss ZZZ yyyy"); 

 new SimpleDateFormat("EEE MMM dd kk:mm:ss Z yyyy"); 

仍然运行。 但是,如果你的代码抛出exception,那是因为你的工具或者jdk或者其他原因。 因为在IDE中遇到同样的错误 ,请使用ZZZ和Z来检查这些http://ideone.com/Y2cRr (在线ide)

输出是: Thu Sep 28 11:29:30 GMT 2000

 String target = "27-09-1991 20:29:30"; DateFormat df = new SimpleDateFormat("dd MM yyyy HH:mm:ss"); Date result = df.parse(target); System.out.println(result); 

这工作正常?

我有这个问题,我把地区LocaleUS ,然后工作。

 static DateFormat visitTimeFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.US); 

String "Sun Jul 08 00:06:30 UTC 2012"

parsingexception是一个检查exception,所以你必须在parsingstring到date的时候用try-catch来捕捉exception,就像@mikubuild议的那样。