Formatter格式化

Java提供了对数值、字符串和日期/时间数据的常规格式和特定于语言环境的输出的支持,主要是自由输出。java.util.Formatter(1.5后提供)转换为指定格式的字符串,用于实现printf和String.format()。以下是其中格式化公式format的介绍

整数

格式化公式:%[index$][标识][最小宽度]转换方式

index$:指定是第几个参数

最小宽度:转换后的整数的最小位数

标识:

1.  '-':在最小宽度内左对齐,不可以与“用0填充”同时使用

2.  '#':只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x

3.  '+':结果总是包括一个符号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)

4.  '  ':正值前加空格,负值前加负号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)

5.  '0':结果将用零来填充

6.  ',':只适用于10进制,每3位数字之间用“,”分隔

7.  '(':若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(同‘+’具有同样的限制)

标识可以有多个。

转换方式:

1. d-十进制

2. o-八进制

3. x或X-十六进制

浮点数

格式化公式:%[index$][标识][最少宽度][.精度]转换方式

浮点数的格式化公式比整数的多了一个精度,用于控制小数点后的位数。

标识:

1.  '-':在最小宽度内左对齐,不可以与“用0填充”同时使用

2.  '+':结果总是包括一个符号

3.  '  ':正值前加空格,负值前加负号

4.  '0':结果将用零来填充

5.  ',':每3位数字之间用“,”分隔(只适用于fgG的转换)

6.  '(': 若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(只适用于eEfgG的转换)

转换方式:

1.  'e', 'E'  --  结果被格式化为用计算机科学记数法表示的十进制数

2.  'f'          --  结果被格式化为十进制普通表示方式

3.  'g', 'G'    --  根据具体情况,自动选择用普通表示方式还是科学计数法方式

4.  'a', 'A'    --   结果被格式化为带有效位数和指数的十六进制浮点数

百分号

百分比符号“%”是特殊格式的一个前缀。那么我们要输入一个百分比符号该怎么办呢?肯定是需要转义字符的,但是要注意的是,在这里转义字符不是“\”,而是“%”。换句话说,下面这条语句可以输出一个“12%”:

System.out.println(String.format("%1$d%%", 12));

日期

格式化公式:%[index$]t转换方式

可以操作Date类型

转换方式:

1.  'B':特定于语言环境的月份全称,例如 "January" 和 "February"。

2.  'b':特定于语言环境的月份简称,例如 "Jan" 和 "Feb"。

3.  'h':与 'b' 相同。

4.  'A':特定于语言环境的星期几全称,例如 "Sunday" 和 "Monday"

5.  'a':特定于语言环境的星期几简称,例如 "Sun" 和 "Mon"

6.  'C':除以 100 的四位数表示的年份,被格式化为必要时带前导零的两位数,即 00 – 99

7.  'Y':年份,被格式化为必要时带前导零的四位数(至少),例如,0092 等于格里高利历的 92 CE。

8.  'y':年份的最后两位数,被格式化为必要时带前导零的两位数,即 00 - 99。

9.  'j':一年中的天数,被格式化为必要时带前导零的三位数,例如,对于格里高利历是 001 - 366。

10. 'm':月份,被格式化为必要时带前导零的两位数,即 01 - 13。

11. 'd':一个月中的天数,被格式化为必要时带前导零两位数,即 01 – 31

12. 'e':一个月中的天数,被格式化为两位数,即 1 - 31。

时间

格式化公式:%[index$]t转换方式

操作代表时间long(起始时间为1970.1.1)

转换方式:

1.  'H':24 小时制的小时,被格式化为必要时带前导零的两位数,即 00 - 23。

2.  'I':12 小时制的小时,被格式化为必要时带前导零的两位数,即 01 - 12。

3.  'k': 24 小时制的小时,即 0 - 23。

4.  'l':12 小时制的小时,即 1 - 12。

5.  'M':小时中的分钟,被格式化为必要时带前导零的两位数,即 00 - 59。

6.  'S':分钟中的秒,被格式化为必要时带前导零的两位数,即 00 - 60 ("60" 是支持闰秒所需的一个特殊值)。

7.  'L':秒中的毫秒,被格式化为必要时带前导零的三位数,即 000 - 999。

8.  'N':秒中的毫微秒,被格式化为必要时带前导零的九位数,即 000000000 - 999999999。

9.  'p':特定于语言环境的 上午或下午 标记以小写形式表示,例如 "am" 或 "pm"。使用转换前缀 'T' 可以强行将此输出转换为大写形式。

10. 'z':相对于 GMT 的 RFC 822 格式的数字时区偏移量,例如 -0800。

11. 'Z':表示时区缩写形式的字符串。Formatter 的语言环境将取代参数的语言环境(如果有)。

12. 's':自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的秒数,即 Long.MIN_VALUE/1000 与 Long.MAX_VALUE/1000 之间的差值。

13. 'Q':自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的毫秒数,即 Long.MIN_VALUE 与 Long.MAX_VALUE 之间的差值。

日期时间混合

格式化公式:%[index$]t转换方式

转换方式:

1.  'R':24 小时制的时间,被格式化为"%tH:%tM"

2.  'T':24 小时制的时间,被格式化为"%tH:%tM:%tS"。

3.  'r':12 小时制的时间,被格式化为"%tI:%tM:%tS %Tp"。上午或下午标记 ('%Tp') 的位置可能与语言环境有关。

4.  'D':日期,被格式化为 "%tm/%td/%ty"。

5.  'F':ISO 8601 格式的完整日期,被格式化为"%tY-%tm-%td"。

6.  'c':日期和时间,被格式化为 "%ta %tb %td %tT %tZ %tY",例如 "Sun Jul 20 16:17:00 EDT 1969"

字符串

格式化公式:%[index$]s/S,%s/%S

其中s调用的是formattable接口的方法formatTo,如果没有实现该接口,则使用toString方法

其中‘S’对应,将字符串大写

%s/%S,按顺序输出,加index后可以调整输出顺序

Formatter格式化相关推荐

  1. EasyUI DataGrid 中字段 formatter 格式化不起作用

    今天用 EasyUI datagrid 来做列表,要对一些数据进行格式化,推断某字段状态时,发现 formatter 格式化相应的函数不起作用. <table id="list_dat ...

  2. 关于formatter(格式化器)函数的使用

    1.formatter函数作用 formatter(格式化)函数可以用来对渲染在单元格中的数据做操作,(比如:后台返回状态值是数字,可以根据相应的值做判断等等). 2.formatter函数所带参数及 ...

  3. EleemntUI中el-table的formatter格式化字典显示的使用

    场景 某些类似于用字典(键值对)存储的属性,比如操作员这种 1代表用户id 数组库存储的也是用户id,但是在页面上展示的是用户姓名 数据库中存储czy是数字即用户的id 而要在页面上展示的是用户姓名 ...

  4. Formatter(格式化)

    格式化 (Formatter类,参考点击打开链接) 简述: (格式化的概述) 对于一般字符.数字的格式修饰的格式:%[argument_index$][flags][width][.precision ...

  5. 8. 格式化器大一统 -- Spring的Formatter抽象

    目录 本文提纲 版本约定 ✍正文 Printer&Parser Formatter 时间日期格式化 Date类型 代码示例 JSR 310类型 整合DateTimeFormatter 代码示例 ...

  6. android Formatter 的使用

    今天,简单讲讲android里的关于Formatter 的使用.  这几天换租房的位置,好累啊.弄得我写博客的习惯都没有按时完成.之前,我在看String.format的源码时,发现了String ...

  7. 4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

    技术活,该赏 点赞再看,养成习惯 看本篇文章前,建议先对java源码的日期和时间有一定的了解,如果不了解的话,可以先看这篇文章: 万字博文教你搞懂java源码的日期和时间相关用法 关联文章: huto ...

  8. Vs Code中Vue代码格式插件,Vetur、ESLint 、Prettier - Code formatter的介绍使用及相关配置

    文章目录 一.插件的介绍与安装 1.Vetur插件 2.ESLint 插件 3.Prettier - Code formatter插件 二.相关文件配置 总结 前面主要先对插件进行介绍和如何安装,之后 ...

  9. 9. 细节见真章,Formatter注册中心的设计很讨巧

    目录 本文提纲 版本约定 ✍正文 FormatterRegistry:格式化器注册中心 FormattingConversionService PrinterConverter:Printer接口适配 ...

最新文章

  1. API 23之前的版本都是自动获取权限,而从 Android 6.0 开始添加了权限申请的需求,更加安全。
  2. Android中的事件处理机制
  3. 对想进入Unity开发新人的一些建议
  4. 大数据时代第一部分思维导图_大数据时代总结思维导图模板分享
  5. moldflow2016安装教程
  6. 【转】android程序连接网络出现android.os.NetworkOnMainThreadExceptionat
  7. java 抽象类_java中的抽象类
  8. 互联网裁员屡见不鲜,但有时互联网的裁员却不太体面
  9. N002-认知C#中的字符串
  10. [文艺节目/礼仪大赛策划方案]图:选手出场时?如何用Flash透明渲染PPT?展示排行榜时如何使用PPT及Flash渲染?
  11. Atitit.h5 web webview性能提升解决方案-----fileStrore缓存离线存储+http方案
  12. Python之Python3本地安装教程
  13. 分享 27 个面向开发人员的最佳 Vue.js 开发工具
  14. 三维全景拍摄这些技巧很实用
  15. Git使用笔记[持续更新]
  16. 给大家分享两套WordPress收费主题
  17. 转行网络工程师,软考和华为认证选哪个?
  18. 炉石传说 账号老是重新连接服务器,炉石传说无法连接服务器怎么办 炉石传说无法连接请检查网络连接是什么原因...
  19. 用镭神32线激光雷达实现A_LOAM LeGO_LOAM
  20. java EE基础概念了解

热门文章

  1. 小伙因家人“催催催” 欲轻生 民警苦劝将其救下
  2. DNA 4. SCI 文章中基因组的突变信号(maftools)
  3. 深度学习——核心思想
  4. Python开发实例:TPYBoard开发板制作声光控开关
  5. JVM中的对象探秘(三)- 对象的实例数据与对齐填充
  6. 计算机配置好坏怎么看,电脑配置怎么看 史上最全的查看电脑配置好坏方法
  7. 【观点】如何度过自己的研究生生涯,看看院士的回答,兴许会有一些收获。
  8. Python day13--网络编程
  9. 马克一下 Michael Moore
  10. 计算机考研英语复试自我介绍范文,2020考研英语复试自我介绍模板5篇