我有一个问题,我想在“2013年11月15日”格式中解析字符串到日期,但我无法在SimpleDateFormat类中使用MMMM D,YYYY这样做。请提出任何解决方案。
代码:
SimpleDateFormat formatter = new SimpleDateFormat("MMMM DD, yyyy");
try {
Date publishedDate = formatter.parse(pictureDirectory.replace(str, ""));
hashMap.put(publishedDate, getImageFromSdCard(picturePath));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
它总是返回'2013年11月15日星期五00:00:00'。
提前致谢。
答案 0 :(得分:1)
在SimpleDateFormat处查看Android中的示例。
String[] formats = new String[] {
"yyyy-MM-dd",
"yyyy-MM-dd HH:mm",
"yyyy-MM-dd HH:mmZ",
"yyyy-MM-dd HH:mm:ss.SSSZ",
"yyyy-MM-dd'T'HH:mm:ss.SSSZ",
};
for (String format : formats) {
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US);
System.out.format("%30s %s\n", format, sdf.format(new Date(0)));
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.format("%30s %s\n", format, sdf.format(new Date(0)));
}
输出:
yyyy-MM-dd 1969-12-31
yyyy-MM-dd 1970-01-01
yyyy-MM-dd HH:mm 1969-12-31 16:00
yyyy-MM-dd HH:mm 1970-01-01 00:00
yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000
答案 1 :(得分:0)
你可以做这样的事情
SimpleDateFormat orignalFormat= new SimpleDateFormat("MMMMMMMMM dd, yyyy"); //November 15, 2013
Date date = null;
try {
date = origFormat.parse(apkgalaxy.getPosted_on());
} catch (ParseException e) {
e.printStackTrace();
}
并通过以下代码
以所需格式设置日期SimpleDateFormat newFormat_date= new SimpleDateFormat("yyyy-MM-dd"); //any format you want
if (date!=null) {
String desiredDateFormat = newFormat_date.format(date);
holder.posted_on_date.setText(desiredDateFormat);
}else{
holder.posted_on_date.setText("N/A");
}
答案 2 :(得分:0)
我认为你不应该使用像Date这样的可变对象作为HashMap的键。考虑将日期转换为String。这就是我格式化日期的方式。
DateFormat formatter1 = new SimpleDateFormat("MMMMM DD, yyyy");
System.out.println(formatter1.parse("15/02/2013"));
答案 3 :(得分:0)
因为SimpleDateFormat是Depreciated
我建议你这样使用
android.text.format.DateFormat dateFormat= new android.text.format.DateFormat();
dateFormat.format("MMMM DD, yyyy", new java.util.Date());