• Java程序设计——格式化处理(Java高级应用)


    目录

    一、数字格式化

    二、货币格式化

    三、日期格式化

    四、SimpleDateFormat(DateFormat的子类)

    五、Java8新增的DataTimeFormatter

    六、消息格式化


    一、数字格式化

    在不同的国家,数字的表示方式是不一样的,因此对数字表示将根据不同的Locale来格式化

    方法功能
    static NumberFormat getNumberInstance()返回与当前系统信息相关的默认的数字格式器对象
    static NumberFormat getNumberInstance(Locale locale)返回指定Locale的数字格式器对象


    static NumberFormat getPercentInstance()返回与当前系统信息相关的默认的百分比格式器对象
    static NumberFormat getPercentInstance(Locale locale)返回指定Locale的百分比格式器对象


    String format(double number)将数字number格式化字符串返回
    Number parse(String str)将指定的字符串解析为Number对象
    1. import java.text.NumberFormat;
    2. import java.util.*;
    3. public class MainClass {
    4. public static void main(String[] args) {
    5. Locale chinese = new Locale("zh","CN");
    6. Locale us = new Locale("en","US");
    7. NumberFormat zh_Number = NumberFormat.getNumberInstance(chinese);
    8. NumberFormat en_Number = NumberFormat.getNumberInstance(us);
    9. NumberFormat zh_Percent = NumberFormat.getPercentInstance(chinese);
    10. NumberFormat en_Percent = NumberFormat.getPercentInstance(us);
    11. System.out.println("数字格式化:");
    12. System.out.println(zh_Number.format(12.345));
    13. System.out.println(en_Number.format(12.345));
    14. System.out.println("百分比格式化:");
    15. System.out.println(zh_Percent.format(0.5));
    16. System.out.println(en_Percent.format(0.5));
    17. }
    18. }

     


    二、货币格式化

    方法功能
    static NumberFormat getCurrencyInstance()返回与当前系统信息相关的默认的货币格式器对象
    static NumberFormat getCurrencyInstance(Locale locale)返回指定Locale的货币格式器对象
    1. import java.text.NumberFormat;
    2. import java.util.Locale;
    3. public class MainClass {
    4. public static void main(String[] args){
    5. Locale chinese = new Locale("zh","CN");
    6. Locale us = new Locale("en","US");
    7. NumberFormat rmb = NumberFormat.getCurrencyInstance(chinese);
    8. NumberFormat doller = NumberFormat.getCurrencyInstance(us);
    9. System.out.println("人民币:"+rmb.format(58.32));
    10. System.out.println("美元:" +doller.format(58.32));
    11. }
    12. }


    三、日期格式化

    方法功能
    static DateFormat getDateInstance()返回默认样式的日期格式器
    static DateFormat getDateInstance(int style)返回指定样式的日期格式器
    static DateFormat getDateInstance(int style,Locale locale)返回指定样式和Locale的日期格式器


    static DateFormat getTimeInstance()返回默认样式的时间格式器
    static DateFormat getTimeInstance(int style)返回指定样式的时间格式器
    static DateFormat getTimeInstance(int style,Locale locale)返回指定样式和Locale的时间格式器


    static DateFormat getDateTimeInstance()返回默认样式的日期时间格式器
    static DateFormat getDateTimeInstance(int dayStyle,int timeStyle)返回指定样式的日期时间格式器
    static DateFormat getDateTimeInstance(int dayStyle,int timeStyle,Locale locale)返回指定样式和Locale的日期时间格式器

    1. import java.text.DateFormat;
    2. import java.util.Date;
    3. import java.util.Locale;
    4. public class MainClass {
    5. public static void main(String[] args) {
    6. Date now = new Date(); // 获取当前的日期时间
    7. Locale locale1 = new Locale("zh","CN");
    8. Locale locale2 = new Locale("en","US");
    9. System.out.println("中文格式:");
    10. Print(now,locale1);
    11. System.out.println("英文格式:");
    12. Print(now,locale2);
    13. }
    14. public static void Print(Date date, Locale locale){
    15. DateFormat df1 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,locale);
    16. DateFormat df2 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG,locale);
    17. DateFormat df3 = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.DEFAULT,locale);
    18. DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT,locale);
    19. System.out.println(df1.format(date));
    20. System.out.println(df2.format(date));
    21. System.out.println(df3.format(date));
    22. System.out.println(df4.format(date));
    23. }
    24. }


    四、SimpleDateFormat(DateFormat的子类)

    部分日期格式符:

    模式字符功能
    D一年中的第几天
    d一月中的第几天
    E星期中的第几天
    y
    H小时(0~23)
    h小时(0~11),AM/PM区分上下午
    M月份
    m分钟
    S毫秒
    s

    1. import java.text.SimpleDateFormat;
    2. import java.util.Date;
    3. public class SimpleDateFormat_3 {
    4. public static void main(String[] args) {
    5. Date now = new Date();
    6. SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss");
    7. SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    8. SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("现在是yyyy年MM月dd日,是今年的第D天");
    9. System.out.println(simpleDateFormat1.format(now));
    10. System.out.println(simpleDateFormat2.format(now));
    11. System.out.println(simpleDateFormat3.format(now));
    12. }
    13. }


    五、Java8新增的DataTimeFormatter

    DateTimeFormatter不仅可以将时间、日期对象格式化成字符串,还可将特定的字符串解析为时间、日期对象

    获取DateTimeFormatter对象的方式:

    1. import java.time.LocalDateTime;
    2. import java.time.format.DateTimeFormatter;
    3. import java.time.format.FormatStyle;
    4. public class DateTimeFormatterDemo {
    5. public static void main(String[] args) {
    6. LocalDateTime dateTime = LocalDateTime.now(); // 获取本地的日期时间
    7. // 1.使用静态常量创建DateTimeFormatter对象
    8. DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
    9. System.out.println(dateTime.format(dateTimeFormatter1));
    10. System.out.println("-----------------------");
    11. // 2.使用不同风格的枚举值创建DateTimeFormatter对象
    12. DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL,FormatStyle.SHORT);
    13. System.out.println(dateTime.format(dateTimeFormatter2));
    14. System.out.println("-----------------------");
    15. // 3.使用模式字符串来创建DateTimeFormatter对象
    16. DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    17. System.out.println(dateTime.format(dateTimeFormatter3));
    18. System.out.println("-----------------------");
    19. // 1.解析字符串,成为日期和时间
    20. String s1 = "2022-06-28 20:06:00"; // 定义一个任意格式的日期时间字符串
    21. DateTimeFormatter dateTimeFormatter4 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");// 定义解析用的格式器
    22. LocalDateTime dateTime1 = LocalDateTime.parse(s1,dateTimeFormatter4);// 执行解析
    23. System.out.println(dateTime1);
    24. }
    25. }


    六、消息格式化

    国际化软件需要根据用户的本地化消息输出不同的格式

    MessageFormat可实现消息的动态处理:

    构造方法功能
    public MessageFormat(String pattern)根据指定的模式字符串创建MessageFormat对象
    public MessageFormat(String pattern,Locale locale)根据指定的模式字符串和语言环境创建MessageFormat对象


    常用方法功能
    public void applyPattern(String pattern)设置模式字符串
    public String toPattern()返回当前状态的模式字符串
    public setLocale(Locale locale)设置语言环境
    public final String format(Object obj)格式化一个对象生成一个字符串(Format提供的方法)
    public static String format(String pattern,Object...arg)创建给定模式的MessageFormat对象,并使用该对象格式化给定的参数

     

    1. import java.text.MessageFormat;
    2. import java.util.Date;
    3. import java.util.Locale;
    4. public class MessageFormatDemo {
    5. public static void main(String[] args) {
    6. // 1.定义一个带占位符的模式字符串
    7. String pattern = "{0}, 您好!当前日期时间为:{1}";
    8. // 2.创建MessageFormat对象
    9. MessageFormat messageFormat = new MessageFormat(pattern);
    10. // 3.创建Locale对象,并调用setLocale()方法,设置MessageFormat对象的语言环境
    11. Locale locale = Locale.getDefault();
    12. messageFormat.setLocale(locale);
    13. // 4.创建一个对象数组,并按照占位符的索引来组织数据
    14. Object[] objects = {"亲爱的用户", new Date()};
    15. // 5.调用format()方法实现消息格式化,并将对象数组作为该方法的参数
    16. System.out.println(messageFormat.format(objects));
    17. }
    18. }


  • 相关阅读:
    笔试强训48天——day21
    【ROS入门】机器人导航(仿真)——导航实现
    接口测试总结
    短视频挺进在线音乐腹地
    【中鸡前端+Vue面试精选】
    手机照片回收站无法恢复图片怎么办?2个措施,找回丢失的相册
    Redis 常用的数据结构简介与实例测试【Redis 系列二】
    现代C++、STL、QTL的使用
    Java面向对象(基础)-- 类的成员之三:构造器(Constructor)
    Java 第三阶段增强分析需求,代码实现能力【网络编程】
  • 原文地址:https://blog.csdn.net/Mr_Morgans/article/details/125507282