android中的日期格式

时间:2014-01-02 12:27:40

标签: android simpledateformat

我有一个问题,我想在“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'。

提前致谢。

4 个答案:

答案 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());