NumberFormat
getAvailableLocales() 返回所有的语言环境的数组
getInstance()返回默认的语言环境的 数字格式
getInstance(local)返回指定的local的语言环境的数字格式
getCurrencyInstance()返回默认的 货币格式
DecimalFormat
符号含义:
0 一个数字 要补0
** # **一个数字,不补0
. 小数的分隔符的占位符
, 分组分隔符的占位符
; 分隔格式。
-负数前缀。
% 乘以 100 和作为百分比显示
E 科学计算法
? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用 国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代 替十进制分隔符。
X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。
double pi=3.1415927;//圆周率
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));//03.142
//取所有整数部分
System.out.println(new DecimalFormat("#").format(pi));//3
//以百分比方式计数,并保留两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%
long c=299792458;//光速
//显示为科学计数法,并取五位小数 E后的就是10的指数
System.out.println(new DecimalFormat("#.#####E0").format(c));//2.99792E8
//显示为两位整数的科学计数法,并取四位小数
System.out.println(new DecimalFormat("00.####E0").format(c));//29.9792E7
//每三位以逗号进行分隔。
System.out.println(new DecimalFormat(",###").format(c));//299,792,458
//将格式嵌入文本
System.out.println(new DecimalFormat("光速大小为每秒,###米").format(c)); //光速大小为每秒299,792,458米
注意的是 如果你指定的数字格式如"0.0" 而要格式化的数字是123.456 ,最终格式化的结果是123.4 整数部分会完整的保留下来,小数部分超过的会舍掉
DateFormat类
是一个抽象类,可以通过 该类中的static方法 getDateInstance() 来得到实例对象
还有getDateTimeInstance()来得到时间日期对象
其中format(Date对象)方法就是格式化日期
getDateInstance(style,locale)
var i=DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","CN"));设置格式以便中国的阅读方式
但这还是系统自带的默认的,如果你想要格式化为你自己想要的 格式的话要用到DateFormat的子类 SimpleDateFormat
SimpleDateFormat
在实际的开发中常用SimpleDateFormat将String转换为Date
日期格式化模板标记
y年 M月 d天 H小时 m分钟 s秒 SSS毫秒
其实这里 的y啊m之类的个数只是 规定了 对应的数字个数
如果 y 的数量大于年份的数字数量::yyyyy 的年份是2022年的话 那么 就是02022年会 添加0补齐
如果 y 的数量小于年份的数字数量::y的年份是2022年的话 那么就还是2022年不变
日期转字符串
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
Date d= new Date();
String str = sdf.format(d);
System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );
Date d1= new Date();
String str1 = sdf1.format(d1);
System.out.println("当前时间通过 yyyy-MM-dd 格式化后的输出: "+str1);
也可以这样 String format="yyyy/MM/dd HH:mm:ss";
Date d=new Date();
System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+format.formatted(d));
字符串也带有一个方法将Data格式输出