1. 程式人生 > >Java 格式化:數字,貨幣,日期,訊息

Java 格式化:數字,貨幣,日期,訊息

數字格式化

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);
    }

}