最近的工作重点在搞HOTP算法,其实对时间的格式化中有一行String fmtTime = String.format("%1$-11s", testTime[i]);这样的代码,查API没太搞清楚是怎么回事,后来经搜索资料查出其使用方法。
String.format()就是格式化的意思,将各类数据格式化为字符串输出,上段的那句代码的意思是将时间格式化为unix时间,即(UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的秒数。
列下format使用的方法:
1.对整数进行格式化:%[index$][标识][最小宽度]转换方式
格式化字符串由4部分组成,特殊的格式通通以%index$开头,index从1开始取值,表示将第index个参数拿进来进行格式化,[最小宽度]的含义,就是最终该整数转化的字符串最少包含多少位数字。剩下2个部分的含义
标识:
'-' 在最小宽度内左对齐,不可以与“用0填充”同时使用
'#' 只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x
'+' 结果总是包括一个符号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)
'0' 结果将用零来填充
',' 只适用于10进制,每3位数字之间用“,”分隔
'(' 若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(同‘+’具有同样的限制)
下边是例子:
System.out.println(String.format("%1$,09d", -33123));
System.out.println(String.format("%1$-9d", -66));
System.out.println(String.format("%1$(9d", -6));
System.out.println(String.format("%1$#9x", 1111));
结果分别是:-0033,123