1.時間類型格式化
1-1.Date(日期)
? ? ? ? Date類是一個非抽象類乞娄,也就是具體類衅码,那么就可以將其實例化咧最,實例化會使用系統(tǒng)的當(dāng)前日期和時間創(chuàng)建一個日期對象翩腐,這個時間通常被稱為Java 虛擬機(JVM)主機環(huán)境的系統(tǒng)時間慈鸠,通過Date類的get方法可以拿到我們想要的具體數(shù)據(jù)蓝谨,也可以通過set方法來設(shè)置特定的時間和日期。要注意的是通過get方法拿到的某些值是與1999年01月01日0時0分的相對值青团。比如現(xiàn)在如果是2016年譬巫,那么下圖代碼的輸出為116。
? ? ? ? 我們可以發(fā)現(xiàn)這個getYear()方法上有一個橫線督笆,其實Date的好多方法都是如此缕题,原因是不被推薦使用,而被推薦的是使用Calendar類來達到相關(guān)的目的胖腾。
1-2.Calendar(日歷)
? ? ? ? Calendar類是一個抽象類烟零,通常通過getInstance()方法得到一個當(dāng)前時區(qū),當(dāng)前語言設(shè)置下的實例咸作。
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
? ? ? ? ?現(xiàn)在是2016年12月锨阿,那么year的值為2016,month的值為11(一月是0)记罚。
? ? ? ? ?我們也可以通過其set方法設(shè)置我們想要的時間和日期墅诡。要注意的是通過Date類和Calendar類的set方法設(shè)置日期時間后,再通過get方法拿到的是我們設(shè)置的時間和日期桐智。
? ? ? ? ?圖(2)year和month的值為2015和5(6月)末早。
1-3.DateFormat(日期格式)
? ? ? ? DateFormat類也是一個抽象類,通常使用其具體子類SimpleDateFormat來對日期類型(Date類型)進行格式化说庭,使用其構(gòu)造方法實例化一個SimpleDateFormat然磷,并給出想要的格式就可以對Date類型進行格式化了。
Sun Dec 04 13:25:14 CST 2016
2016-12-04 13:25:14
2.數(shù)字格式化和精度
2-1.使用NumberFormat
? ? ? ?NumberFormat.getInstance()方法返回NumberFormat的一個實例(實際上是NumberFormat具體的一個子類刊驴,例如DecimalFormat),? 這適合根據(jù)本地設(shè)置格式化一個數(shù)字姿搜」讶螅可以使用非缺省的地區(qū)設(shè)置,例如德國舅柜。然后格式化方法根據(jù)特定的地區(qū)規(guī)則格式化數(shù)字梭纹。
NumberFormat nf =NumberFormat.getInstance(Locale.CHINA);
nf.format(1234567.12345)
? ? ? ? 如果將這個值輸出,則為123,456.123致份,默認(rèn)四舍五入保留三位小數(shù)变抽。顯然這種方法不好用且有一定的缺陷。
2-2.使用DecimalFormat
? ? ? ? DecimalFormat是一個具體類氮块,用法和SimpleDateFormat相似绍载,通過其構(gòu)造方法實例化,并給出想要的格式雇锡。
2-2-1.格式化數(shù)字
DecimalFormat df0 = new DecimalFormat();
System.out.println(df0.format(123456));
因為本地是中國逛钻,則輸出為123,456,可以設(shè)置不同的國家锰提,來得到相應(yīng)的格式曙痘。
Locale.setDefault(Locale.GERMAN);
DecimalFormat df0 = new DecimalFormat();
System.out.println(df0.format(123456));
設(shè)置為德國風(fēng)格,則輸出為123.456立肘。(中國的為一撇边坤,德國的為一點)
2-2-2.數(shù)字精度
DecimalFormat? df1? =? new? DecimalFormat(".000");
System.out.println(df1.format(1234.56));
輸出為1234.560。也可以使用像"####.000"的符號谅年。這個模式意味著在小數(shù)點前有四個數(shù)字茧痒,如果不夠就空著,小數(shù)點后有三位數(shù)字融蹂,不足用0補齊旺订。
DecimalFormat df0 = new DecimalFormat();
DecimalFormat df1 = new DecimalFormat(".00");
String i = df1.format(123456.12345);
System.out.println(i);
System.out.println(df0.format(Double.parseDouble(i)));
輸出分別為:123456.12
? ? ? ? ? ? ? ? ? ? ? 123,456.12
2-2-3.科學(xué)計數(shù)法
DecimalFormat? df? =? new? DecimalFormat("0.00E0");
System.out.println(df.format(1234000000000000.56));
輸出為:1.23E15。
NumberFormat nf = NumberFormat.getPercentInstance();
System.out.println(nf.format(0.45022));
輸出為:45%超燃。
NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);
System.out.println(nf.format(0.45022));
輸出為:45.02%区拳。