我在MySQL
DATE
中存储了SQLite
TEXT
(来自网络服务)。
在处理日期时我不是专家,所以当我搜索时,我发现你将日期字符串解析为java.util.Date
。
这是我的结果:
// Works like a charm
new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH).parse(strdate)
// Unparseable date exception
new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH).parse(strdate);
我可以就此获得一些指示吗?
答案 0 :(得分:2)
您正在指示日期解析器,您的输入strdate
的格式为dd-MMM-yyyy
。但实际上它是EEE MMM dd kk:mm:ss z yyyy
格式。
+----------------------------+------------------------------+-------------------+
| date pattern you tried | your strdate input | pattern | parse |
| | | matched? | error? |
+----------------------------+------------------------------+----------+--------+
| EEE MMM dd kk:mm:ss z yyyy | Fri Apr 04 06:55:24 GMT 2014 | yes | no |
+----------------------------+------------------------------+----------+--------+
| dd-MMM-yyyy | Fri Apr 04 06:55:24 GMT 2014 | no | yes |
+----------------------------+------------------------------+----------+--------+
如果您尝试重新格式化相同的日期字符串以进行显示,则
示例:
String strdate = "Fri Apr 04 06:55:24 GMT 2014";
String currentPattern = "EEE MMM dd kk:mm:ss z yyyy";
SimpleDateFormat sdf = new SimpleDateFormat( currentPattern, Locale.ENGLISH );
Date dt = sdf.parse( strdate ); // new date is constructed
System.out.println( dt );
String newPattern = "dd-MMM-yyyy"; // new pattern is defined
sdf.applyPattern( newPattern ); // the same is applied
String new_strdate = sdf.format( dt ); // on the date object
System.out.println( new_strdate ); // resulting new string form of date
输出如下:
Fri Apr 04 06:55:24 GMT 2014
04-Apr-2014
答案 1 :(得分:1)
试试这个:
然后要使用您所需的格式打印,您需要第二个SimpleDateFormat:示例代码
SimpleDateFormat sdf = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy",
Locale.ENGLISH);
Date parsedDate = sdf.parse(date);
SimpleDateFormat print = new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
System.out.println(print.format(parsedDate));
<强> 注意: 强>
您应该包含语言环境,就像您的语言环境不是英语一样 日期名称可能无法识别。
IST含糊不清,可能导致问题所以你应该使用 如果可能,请在输入中输入正确的时区名称。
Java timezone - strange behavior with IST?
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#timezone
答案 2 :(得分:1)
您可以通过这种方式解析,
Date yourdate = format.parse(strdate);
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MMM-yyyy");
String date = DATE_FORMAT.format(yourdate);
System.out.println("dd-MMM-yyyy format : " + date);
dd-MMM-yyyy format : 04-Apr-2014
答案 3 :(得分:1)
parse
期望使用您在SimpleDateFormat
构造函数中指定的格式的Date String。检查存储在SQLite中的日期,它可能在&#34; EEE MMM dd kk:mm:ss z yyyy&#34;格式