Java 格式化:數字,貨幣,日期,訊息
阿新 • • 發佈:2019-01-05
數字格式化
import java.text.NumberFormat; import java.util.Locale; public class NumberFormatDemo { public static void main(String[] args) { double value = 987654.321; Locale cnLocale = new Locale("zh", "CN"); Locale usLocale = new Locale("en", "US"); Locale deLocale = new Locale("de", "DE"); NumberFormat dNf = NumberFormat.getNumberInstance(); // 百分數 NumberFormat pNf = NumberFormat.getPercentInstance(); NumberFormat cnNf = NumberFormat.getNumberInstance(cnLocale); NumberFormat usNf = NumberFormat.getNumberInstance(usLocale); NumberFormat deNf = NumberFormat.getNumberInstance(deLocale); System.out.println("Default Percent Format:" + pNf.format(value)); System.out.println("Default Number Format:" + dNf.format(value)); System.out.println("China Number Format:" + cnNf.format(value)); System.out.println("United Number Format:" + usNf.format(value)); // 德國使用逗號代表小數點,小數點分割長數字 System.out.println("German Number Format:" + deNf.format(value)); try { System.out.println(deNf.parse("3.14").doubleValue()); System.out.println(dNf.parse("3.14F").doubleValue()); System.out.println(dNf.parse("F3.14").doubleValue()); } catch (Exception e) { System.out.println(e); } } }
貨幣格式化
import java.text.NumberFormat; import java.util.Locale; public class CurrencyFormatDemo { public static void main(String[] args) { double value = 987654.321; Locale cnLocale = new Locale("zh", "CN"); Locale usLocale = new Locale("en", "US"); Locale deLocale = new Locale("de", "DE"); NumberFormat cnNf = NumberFormat.getCurrencyInstance(cnLocale); NumberFormat usNf = NumberFormat.getCurrencyInstance(usLocale); NumberFormat deNf = NumberFormat.getCurrencyInstance(deLocale); System.out.println("China Currency Format:" + cnNf.format(value)); System.out.println("United Currency Format:" + usNf.format(value)); System.out.println("German Currency Format:" + deNf.format(value)); } }
日期格式化
- DateFormat
import java.text.DateFormat; import java.util.Date; import java.util.Locale; public class DateFormatDemo { public static void print(Date date, Locale locale) { DateFormat df1 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locale); DateFormat df2 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); DateFormat df3 = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, locale); DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale); System.out.println(df1.format(date)); System.out.println(df2.format(date)); System.out.println(df3.format(date)); System.out.println(df4.format(date)); } public static void main(String[] args) { Date now = new Date(); Locale cnLocale = new Locale("zh", "CN"); Locale usLocale = new Locale("en", "US"); System.out.println("中文格式"); print(now, cnLocale); System.out.println("英文格式"); print(now, usLocale); } }
- SimpleDateFormat
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf1.format(now));
SimpleDateFormat sdf2 =
new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
System.out.println(sdf2.format(now));
SimpleDateFormat sdf3 =
new SimpleDateFormat("現在是 yyyy年 MM 月 dd 日,是今年的第 D 天");
System.out.println(sdf3.format(now));
}
}
- DataTimeFormatter
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
public class DateTimeFormatterDemo {
public static void formateMethod() {
DateTimeFormatter[] formatters = new DateTimeFormatter[]{
// 常量建立
DateTimeFormatter.ISO_LOCAL_DATE,
DateTimeFormatter.ISO_LOCAL_TIME,
DateTimeFormatter.ISO_LOCAL_DATE_TIME,
// 本地化建立
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL,
FormatStyle.MEDIUM),
DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM),
// 模式字串建立
// 三個 MMM 為12月,兩個 MM 為12
DateTimeFormatter.ofPattern("Gyyyy MMM dd HH:mm:ss")};
LocalDateTime date = LocalDateTime.now();
for (int i = 0; i < formatters.length; i++) {
System.out.println(date.format(formatters[i]));
System.out.println(formatters[i].format(date));
}
}
public static void parseMethod() {
String str = "2018==12==02 01時06分09秒";
DateTimeFormatter fomatter = DateTimeFormatter
.ofPattern("yyyy==MM==dd HH時mm分ss秒");
LocalDateTime dt = LocalDateTime.parse(str, fomatter);
System.out.println(dt);
}
public static void main(String[] args) {
formateMethod();
System.out.println("-----------------");
parseMethod();
}
}
訊息格式化
import java.text.MessageFormat;
import java.util.Date;
import java.util.Locale;
/**
* MessageFormat 的 Pattern:{n,[,formatType][,formatStyle]}
*
* Type: Style
* number integer,currency,percent,#.##
* date full,long,medium,short
* time full,long,medium,short
*/
public class MessageFormatDemo {
/**
* 定義訊息格式化方法:msgFormat()
*
* @param pattern 模式字串
* @param locale 語言環境
* @param msgParams 佔位符引數
*/
public static void msgFormat(String pattern, Locale locale,
Object[] msgParams) {
MessageFormat formatter = new MessageFormat(pattern);
formatter.setLocale(locale);
System.out.println(formatter.format(msgParams));
}
public static void main(String[] args) {
String pattern1 = "{0},你好!你在{1}訪問本系統!";
Locale locale1 = Locale.getDefault();
System.out.println(locale1.getCountry());
Object[] msgParams1 = {"使用者名稱", new Date()};
msgFormat(pattern1, locale1, msgParams1);
String pattern2 = "{0},你好!你在{1,date,long}訪問本系統!";
msgFormat(pattern2, locale1, msgParams1);
System.out.println("--------------------------------------");
Locale locale2 = new Locale("en", "US");
System.out.println(locale2.getCountry());
Object[] msgParams2 = {"Username", new Date()};
msgFormat(pattern1, locale2, msgParams2);
msgFormat(pattern2, locale2, msgParams2);
}
}