2016-09-19 151 views
-4

以下程序代碼顯示瞭如何格式化的示例;基於類java.text.MessageFormat的字符串和數值。請參閱說明類,然後調整日期格式rrrr-mm-dd以java格式化結果

這是代碼:

import java.text.MessageFormat; 
import java.util.Date; 



public class FormattingResults { 

public static void main(String[] args){ 

String s; 

Date now = new Date(); 

String place = "Kraków"; 

int mile = 1852; 

double tax = 0.22; 
double price = 31560.76; 

s = MessageFormat.format("{0}, {1,date,full}, time. {1,time,short}", 
place, now); 
System.out.println(s); 

s = MessageFormat.format("{0}kB to {1}B", 256,256*1024); 
System.out.println(s); 

s = MessageFormat.format("{0} x {0} x {0} = {1}", 7, 7*7*7); 
System.out.println(s); 

s = MessageFormat.format("{0,number,currency} + tax({1,number,percent})", 
price, tax); 

System.out.println(s); 

s = MessageFormat.format("{0} {1} it's approximately {2}m", 1, 
"nautical mile", mile); 
System.out.println(s); 
} 
} 

在一般情況下,我不明白這個代碼,可能有人幫我解決一個很簡單的任務,例如:

"("{0}, {1,date,full}, time. {1,time,short}", 

我讀Oracle文檔,但是窗臺不知道它是如何工作的。

+0

請查看[當某人回答我的問題時該怎麼辦?](http://stackoverflow.com/help/someone-answers)。謝謝。 @ D1l4x –

回答

0

MessageFormat使用當前的語言環境來格式化日期。

現在如果你想改變這種格式,你必須使用FormatStyle參數(第三個參數)。

支持的值實際上是短,中,長,遠日期。或者你可以使用自定義模板。

MessageFormat.format("{0}, {1,date,yyyy-mm-dd}, time. {1,time,medium}", place, now); 
--> Kraków, 2016-04-19, time. 16:04:44 

MessageFormat.format("{0}, {1,date,mm-dd-yyyy}, time. {1,time,medium}", place, now); 
--> Kraków, 06-19-2016, time. 16:06:39 
+0

感謝兄弟:) – D1l4x

0

當我運行您的程序,該行打印:

Kraków, Monday, September 19, 2016, time. 3:52 PM 

接下來,我改變了我的計算機到丹麥語,並再次運行。這一次我:

Kraków, 19. september 2016, time. 15:54 

除了已經過去兩分鐘,你會發現,日期和時間,現在印在丹麥的語言和格式,而在此之前它是英語。這是MessageFormat.format()的作用:查找計算機的區域設置並將其應用於輸入。

+0

非常感謝:) – D1l4x