public static void main(String[] args) { /** * 格式化形式 * %[argument_index$][flags][width][.precision]conversion * * argument_index: 可选,是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。 * * flags: 可选,用来控制输出格式 * * 可选,是一个正整数,表示输出的最小长度 * * precision:可选,用来限定输出的精度 * * conversion:必须,用来表示如何格式化参数的字符 */ /** * argument_index$ * %2$s 表示第二个参数输出字符串类型 */ /** * flags是可选参数,用于控制输出的格式,比如左对齐、金额用逗号隔开。 * * '-' 在最小宽度内左对齐,不可以与“用0填充”同时使用 * '+' 结果总是包括一个符号 * ' ' 正值前加空格,负值前加负号 * '0' 结果将用零来填充 * ',' 每3位数字之间用“,”分隔(只适用于fgG的转换) * '(' 若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(只适用于eEfgG的转换) */ /** * width是可选参数,用于控制输出的宽度。 * %5d %5s */ /** * precision是可选参数,用来限定输出的精度,用于浮点数。 * %.5f */ /** * 各种 conversion * * %s 字符串类型 "mingrisoft" * %c 字符类型 'm' * %b 布尔类型 true * %d 整数类型 - 十进制 99 * %x 整数类型 - 十六进制 FF * %o 整数类型 - 八进制 77 * %f 浮点类型 99.99 * %a 十六进制浮点类型 FF.35AE * %e 指数类型 9.38e+5 * %g 通用浮点类型: f和e类型中较短的 * %h 散列码 * %% 百分比类型 % * %n 换行符 * %tx 日期与时间类型(x代表不同的 <日期> 与 <时间> 转换符) * * 注: 日期时间的格式输出一般使用另外的库的相关类来构造, 不采用这种方式 * 日期转换符 * * c 包括全部日期和时间信息 星期六 十月 27 14:21:20 CST 2007 * F “年-月-日”格式 2007-10-27 * D “月/日/年”格式 10/27/07 * r “HH:MM:SS PM”格式(12时制) 02:25:51 下午 * T “HH:MM:SS”格式(24时制) 14:28:16 * R “HH:MM”格式(24时制) 14:28 * B/b/h 本地化显示月份字符串 * A/a 本地化显示星期字符串 * C 年份除以100的结果, 不足俩位补 0 * Y/y 四位年份和2位年份 * j 显示公历年的第几天 * m 显示当前月份, 不足俩位前面补 0 * d 当月的第几天, 不足俩位前面补 0 * e 当月的第几天 * * 时间格式的转换符要更多、更精确 * * H 2位数字24时制的小时(不足2位前面补0) 15 * I 2位数字12时制的小时(不足2位前面补0) 03 * * k 2位数字24时制的小时(前面不补0) 15 * l 2位数字12时制的小时(前面不补0) 3 * * M 2位数字的分钟(不足2位前面补0) 03 * S 2位数字的秒(不足2位前面补0) 09 * * L 3位数字的毫秒(不足3位前面补0) 015 * N 9位数字的毫秒数(不足9位前面补0) 562000000 * p 小写字母的上午或下午标记 中:下午 英:pm * z 相对于GMT的RFC822时区的偏移量 +0800 * Z 时区缩写字符串 CST * s 1970-1-1 00:00:00 到现在所经过的秒数 1193468128 * Q 1970-1-1 00:00:00 到现在所经过的毫秒数 1193468128984 */ // + 为正数或者负数添加符号 // − 左对齐 // 0 数字前补领0 - 右对齐宽度剩余 System.out.printf("{%+-5d} - {%05d}%n", 12, 12); // 宽度不够 System.out.printf("{%+-5d} - {%015d}%n", 1111112, 11111112); String.format("'b':将参数格式化为boolean类型输出,'B'的效果相同,但结果中字母为大写。%b", false); // 格式化参数引用 System.out.printf("%2$s, %1$d %n", 99, "abc"); // 格式化日期 Date date = new Date(); System.out.printf("%1$tF %1$tT %n", date); System.out.println(String.format(Locale.US, "英文星期的简称:%ta", date)); // System.out.printf("%tN%n", date); System.out.printf("%1$td%n", date); System.out.printf("%1$tm%n", date); System.out.println("---------------------------------------------------------------------"); System.out.println(String.format("'B':本地化显示月份字符串,如:January、February")); System.out.println(String.format("'b':本地化显示月份字符串的缩写,如:Jan、Feb")); System.out.println(String.format("'h':本地化显示月份字符串的缩写,效果同'b'")); Calendar calendar = Calendar.getInstance(); System.out.println(String.format(Locale.US, "Locale.US 月份=%1$tB,缩写=%1$tb", calendar)); System.out.println(String.format(Locale.CHINA, "Locale.CHINA 月份=%1$tB,缩写=%1$tb", calendar)); System.out.println(String.format("'A':本地化显示星期几字符串,如:Sunday、Monday")); System.out.println(String.format("'a':本地化显示星期几字符串的缩写,如:Sun、Mon")); System.out.println(String.format(Locale.US, "Locale.US 星期几=%1$tA,缩写=%1$ta", calendar)); System.out.println(String.format(Locale.CHINA, "Locale.CHINA 星期几=%1$tA,缩写=%1$ta", calendar)); System.out.println(String.format("'C':年份除以100的结果,显示两位数,不足两位前面补0:%tC(范围:00-99)", calendar)); System.out.println(String.format("'Y':显示四位数的年份,格利高里历,即公历。不足四位前面补0:%tY", calendar)); System.out.println(String.format("'y':显示年份的后两位:%ty(范围:00-99)", calendar)); System.out.println(String.format("'j':显示当前公历年的天数:第%tj天(范围:001-366)", calendar)); System.out.println(String.format("'m':显示当前月份:%tm月(范围:01-13?怎么会有13个月?)", calendar)); System.out.println(String.format("'d':显示是当前月的第几天,不足两位前面补0:%1$tm月第%1$td天(范围:01-31)", calendar)); System.out.println(String.format("'e':显示是当前月的第几天:%1$tm月第%1$te天(范围:1-31)", calendar)); }