2013-07-25 128 views
4

我在millis中有一個時間戳,並且想要使用分鐘精度來指定日期,月份,年份和小時的格式。Java中的本地化日期格式

我知道我可以指定格式是這樣的:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yy HH:mm"); 
String formatted = simpleDateFormat.format(900000) 

但我想的格式與用戶的語言環境進行本地化。我也試過

DateFormat DATE_FORMAT = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault()); 
DATE_FORMAT.format(new Date()); 

但它不顯示小時。我該怎麼做?

+0

作爲一個說明,似乎'DateFormat.getDateTimeInstance(INT,INT)''調用DateFormat.getDateTimeInstance(INT,INT ,Locale)''使用'Locale.getDefault()',至少在Android的當前版本中。 – JAB

回答

12

正在使用喬達時間(http://joda-time.sourceforge.net/)嗎?如果沒有,那麼我會全心全意推薦使用這個美好的庫,而不是繁瑣的Java API。

如果沒有,你可以使用DateFormat.getDateTimeInstance(int, int, Locale)

第一個INT是小時的風格,另一種是時間的風格,所以請嘗試使用:

DateFormat f = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.getDefault()); 
String formattedDate = f.format(new Date()); 
System.out.println("Date: " + formattedDate); 

看看這個適合你。

輸出爲Locale.GERMANY: 日期:13年7月25日10時57

輸出爲Locale.US: 日期:13年7月25日上午10時57

+0

如果是喬達時間庫,你會怎麼做? – Zax

1

您可以使用DateFormat的方法getDateTimeInstance。在這裏,getDateTimeInstance方法需要3個參數

  1. 日期字段的風格
  2. 時間字段
  3. 的Locale的使用哪一種模式的風格是自動提取

    DATE_FORMAT = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.US); 
    System.out.println(DATE_FORMAT.format(d)); 
    DATE_FORMAT = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.FRENCH); 
    System.out.println(DATE_FORMAT.format(d)); 
    
+0

但是,如果我指定格式Locale參數做什麼? – Addev

+0

我已經更新了答案.. – sanbhat

1

嘗試一些像這樣的東西

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yy HH:mm", Locale.getDefault()); 
    String formatted = simpleDateFormat.format(900000); 
    System.out.println(simpleDateFormat.parse(formatted)); 
1

您可以使用類似這樣的:

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy HH:mm", Locale.getDefault()); 
String formatted = sdf .format(900000); 
System.out.println(simpleDateFormat.parse(formatted)); 
2

But it does not show the hour. How can I do it?

你必須調用DateFormat.getDateTimeInstance(int, int, Locale)

DateFormat.getDateInstance(int, Locale) =>獲取日期格式與給定語言環境的給定格式化風格。

雖然

DateFormat.getDateTimeInstance(int, int, Locale) =>獲取日期/時間格式化器與所述給定格式樣式給定語言環境。

0

使用Joda-Time你可以檢測系統設置並使用不同的時間格式:

String format; 

if (DateFormat.is24HourFormat(context)) { 
    format = "MM/dd/yy, hh:mm"; 
} 
else { 
    format = "MM/dd/yy, h:mm aa"; 
} 

DateTimeFormatter formatter = DateTimeFormat.forPattern(format); 
formatter.print(new DateTime());