2016-03-11 29 views
7

“2016年3月10日6:30:00 PM”这是我的约会,我想将其转换为“2016年3月10日”。我可以在Android中使用SimpleDateFormat,我没有得到确切的模式来转换它。 Plz帮助和thanx提前如何在android中以特定格式转换日期?

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); 

此步骤工作?如果是的话,是否可以有人给我的格式?提前Thanx。

+0

是的,我会爱,但我应该给那种模式? –

回答

13

这被修改,您应使用代码:

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几个小时才能得到正确的时间。

+0

Thanx工作:) –

1

您应该将parse()字符串转换为日期,然后将其格式化为所需的格式。您可以使用MMM dd, yyyy HH:mm:ss a格式来解析给定的字符串。

这里是代码片段:

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 
4

我已经为此问题创建了一个方法。我们只需要通过当前日期格式,所需的日期格式日期字符串

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; 
} 

此方法将以您需要的格式返回日期字符串。 在你的情况的方法调用将是:

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

为了完整起见,这里是现代版。这适用于任何阅读本文的人,他们使用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,请参阅How to use ThreeTenABP in Android Project。在其他Java 6和7上使用ThreeTen Backport

相关问题