如何将日期转换为Android中的特定格式?

“2016年3月10日下午6:30:00”这是我的约会对象,我希望将其转换为“2016年3月10日”。 我可以在android中使用SimpleDateFormat吗? 我没有得到转换它的确切模式。 请提前帮助和感谢

String date="Mar 10, 2016 6:30:00 PM"; SimpleDateFormat spf=new SimpleDateFormat("Some Pattern for above date"); Date newDate=spf.format(date); spf= new SimpleDateFormat("dd MMM yyyy"); String date = spf.format(newDate); 

这个步骤会起作用吗? 如果是,有人可以给我一个这种格式的模式吗? 提前致谢。

这是您应该使用的修改代码:

 String date="Mar 10, 2016 6:30:00 PM"; SimpleDateFormat spf=new SimpleDateFormat("MMM dd, yyyy hh:mm:ss aaa"); Date newDate=spf.parse(date); spf= new SimpleDateFormat("dd MMM yyyy"); date = spf.format(newDate); System.out.println(date); 

使用hh几个小时才能获得正确的时间。

我已经为这个问题创建了一个方法。 我们只需要传递当前日期格式所需日期格式日期字符串

 private String changeDateFormat(String currentFormat,String requiredFormat,String dateString){ String result=""; if (Strings.isNullOrEmpty(dateString)){ return result; } SimpleDateFormat formatterOld = new SimpleDateFormat(currentFormat, Locale.getDefault()); SimpleDateFormat formatterNew = new SimpleDateFormat(requiredFormat, Locale.getDefault()); Date date=null; try { date = formatterOld.parse(dateString); } catch (ParseException e) { e.printStackTrace(); } if (date != null) { result = formatterNew.format(date); } return result; } 

此方法将以您需要的格式返回Date String。 在你的情况下,方法调用将是:

 String date = changeDateFormat("MMM dd, yyyy hh:mm:ss a","dd MMM yyyy","Mar 10, 2016 6:30:00 PM"); 

您应该将String parse()到Date中,然后将其格式化为所需的格式。 您可以使用MMM dd, yyyy HH:mm:ss a格式来解析给定的String。

这是代码片段:

 public static void main (String[] args) throws Exception { String date = "Mar 10, 2016 6:30:00 PM"; SimpleDateFormat spf = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a"); Date newDate = spf.parse(date); spf = new SimpleDateFormat("dd MMM yyyy"); String newDateString = spf.format(newDate); System.out.println(newDateString); } 

输出:

 10 Mar 2016 

为了完整起见,这是现代版本。 这适用于阅读本文的任何人,他们使用Java 8或更高版本,或者对(良好且未来的)外部库感到满意。

  String date = "Mar 10, 2016 6:30:00 PM"; DateTimeFormatter parseFormatter = DateTimeFormatter.ofPattern("MMM d, uuuu h:mm:ss a", Locale.ENGLISH); DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("d MMM uuuu", Locale.ENGLISH); date = LocalDateTime.parse(date, parseFormatter).format(newFormatter); System.out.println(date); 

这打印出所需的

 10 Mar 2016 

请注意对两个DateTimeFormatter对象使用显式语言环境。 “Mar”和“PM”都是英文的,所以除非使用一些讲英语的语言环境,否则解析和格式都不会起作用。 通过明确地给出它,我们使代码足够健壮,以便在计算机和具有其他默认语言环境的JVM上也能按预期运行。

要在Android上使用上述内容,请使用ThreeTenABP,请参阅如何在Android项目中使用ThreeTenABP 。 在其他Java 6和7上使用ThreeTen Backport 。