这是我的约会对象。
Fri, 25 Sep 2015 12:01:16 +0000
输出应该如下所示
2015-09-25 12:01:16
这不起作用。
SimpleDateFormat sdf = new SimpleDateFormat("E, d M y H:m:s X");
我需要将它转换为mysql日期。
我有这个错误
Exception in thread "main"
java.text.ParseException:Unparseable date: "25 Sep 2015 12:01:16"
at java.text.DateFormat.parse(DateFormat.java:366)
at Main.main(Main.java:27)
答案 0 :(得分:6)
您的格式已关闭,您需要三个M
(s)来获取缩减的月份名称(使用一个给出数字值)。像,
String str = "Fri, 25 Sep 2015 12:01:16 +0000";
SimpleDateFormat sdf = new SimpleDateFormat("E, d MMM y H:m:s X");
try {
System.out.println(sdf.parse(str));
} catch (ParseException e) {
e.printStackTrace();
}
我得到一个有效的Date
。至于上面的调试,验证格式的快速而肮脏的方法就像
System.out.println(sdf.format(new Date())); // <-- check your format pattern
答案 1 :(得分:0)
假设确切的给定日期和时间字符串恰好是这种形式 -
WWW, DD MMM YYYY HH:MM:SS +NNNN
- 这应该有效:
public class Date2Date
{
static String month(String s)
{
switch(s.substring(8,11).toLowerCase()){
case "jan": return "01";
// etc.
case "sep": return "09";
// etc.
case "nov": return "11";
}
return "12";
}
public static void main (String args []) {
String str ="Fri, 25 Dec 2015 12:01:16 +0000";
//0123456789012345678901234567890
System.out.println(str.substring(12,16) + "-" + month(str) + "-" +
str.substring(5,7) + " " + str.substring(17,25));
}
}
如果字段的长度不固定,请阅读indexOf
和其他String
函数。我认为必须对输入进行编辑才能使用SimpleDateFormat
,但我可能错了。