2016-03-11 31 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

相關問題