2016-07-16 79 views
1

我有一個字符串,如"2015-07-16 17:07:21"。我想將它轉換成相同格式的日期。我嘗試過這樣的事情。如何將字符串轉換爲日期格式yyyy-MM-dd HH:MM:ss

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss"); 
Date date = sdf.parse("2015-07-16 17:07:21"); 

但輸出是不同的格式,如星期四Jul 16 17:00:21 IST 2015。我怎樣才能讓它工作,因爲我需要。誰能幫我。我知道這可能是重複的,但我沒有找到任何運氣。

+6

日期沒有一種格式,它有一個代表時間點的值。如果你想以某種格式顯示它,你應該使用SimpleDateFormat – guleryuz

+1

我該怎麼做。你可以給我一個例子或鏈接提及嗎? – sparrow

+0

如果您希望它的格式不同,請使用您需要的模式定義另一個SimpleDateformat並使用它格式化日期。要清楚:您有一個SimpleDateformat解析輸入,另一個用於打印輸出。 –

回答

8

從Java API https://docs.oracle.com/javase/8/docs/api/java/util/Date.html

類Date表示特定的瞬間,精確到毫秒。

試着瞭解DateDateFormat的區別/連接。

public static void main(String [] args) throws ParseException{ 
    String dateString = "2015-07-16 17:07:21"; 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

    // use SimpleDateFormat to define how to PARSE the INPUT 
    Date date = sdf.parse(dateString); 

    // at this point you have a Date-Object with the value of 
    // 1437059241000 milliseconds 
    // It doesn't have a format in the way you think 

    // use SimpleDateFormat to define how to FORMAT the OUTPUT 
    System.out.println(sdf.format(date)); 

    sdf = new SimpleDateFormat(); 
    System.out.println(sdf.format(date)); 

    // .... 
} 

輸出:(請注意,日期保持不變,只是它的表示(格式)的變化)

2015-07-16 17:07:21 
7/16/15 5:07 PM 
0

嘗試格式字符串,如:YYYY-MM-DD HH:MM:SS

L:月,M:分鐘

public static void main(String [] args){ 
    String dateString = "2015-07-16 17:07:21"; 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date date; 
    try { 
     date = sdf.parse(dateString); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
     return; 
    } 
    System.out.println(sdf.format(date)); 
    System.out.println(dateString.equals(sdf.format(date))); 
} 

還,日期不具備的格式,它有一個代表一個時間點的值。如果你想以某種格式來顯示它您應該使用的SimpleDateFormat

+0

我試過了。它不起作用 – sparrow

+0

sdf.format(日期)再次返回字符串。 – sparrow

-1

看到這個代碼:

public static void main(String [] args){ 
    String dateString = "2015-07-16 17:07:21"; 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date date; 
    try { 
     date = sdf.parse(dateString); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
     return; 
    } 
    System.out.println(date); // Displays date in it's default format Jul 16 17:00:21 IST 2015 
    System.out.println(dateString.equals(date)); // Returns false since 'Jul 16 17:00:21 IST 2015' is not equal to dateString (2015-07-16 17:07:21) 
} 

Date類總是存儲日期以其默認格式。 SimpleDateFormat有助於使用其對象格式化日期。它不會對日期類對象進行任何更改。相反,它將Date類轉換爲用戶定義的格式,它對Date類對象沒有任何影響。我想這很清楚。

0

嘗試使用此:

public static void main(String[] args) { 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    String dateInString = "2015-07-16 17:07:21"; 
    try { 

     Date date = formatter.parse(dateInString); 

     System.out.println(date); 
     System.out.println(formatter.format(date)); 

    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
} 

輸出:

Thu Jul 16 17:07:21 IST 2015 
2015-07-16 17:07:21 

注: 有關完整的日期和時間模式,請參閱本http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

相關問題