日期格式化
在之前的博客中我们使用到了操作日期的一些类,我们发现,如果我们想要获得指定格式的日期字符串可以做到但是很麻烦,下面为大家介绍几种日期的格式化方式。
java.text.DateFormat
DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。
DateFormat提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间 Formatter。格式化风格包括 FULL、LONG、MEDIUM和SHORT。
DateFormat可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。
要格式化一个当前语言环境下的日期,可使用某个静态工厂方法: myString = DateFormat.getDateInstance().format(myDate);
如果格式化多个日期,那么获取该格式并多次使用它是更为高效的做法,这样系统就不必多次获取有关环境语言和国家/地区约定的信息了。
DateFormat df = DateFormat.getDateInstance();
for (int i = 0; i < myDate.length; ++i) {
output.println(df.format(myDate[i]) + "; ");
}
要格式化不同语言环境的日期,可在getDateInstance()的调用中指定它。 DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
还可使用DateFormat进行解析。 myDate = df.parse(myString);
使用getDateInstance
来获取该国家/地区的标准日期格式。另外还提供了一些其他静态工厂方法。使用 getTimeInstance 可获取该国家/地区的时间格式。使用getDateTimeInstance 可获取日期和时间格式。可以将不同选项传入这些工厂方法,以控制结果的长度(从 SHORT 到 MEDIUM 到 LONG 再到 FULL)。确切的结果取决于语言环境,但是通常:
- SHORT 完全为数字,如 12.13.52 或 3:30pm
- MEDIUM 较长,如 Jan 12, 1952
- LONG 更长,如 January 12, 1952 或 3:30:32pm
- FULL 是完全指定,如 Tuesday、April 12、1952 AD 或 3:30:42pm PST
如果愿意,还可以在格式上设置时区。如果想对格式化或解析施加更多的控制(或者给予用户更多的控制),可以尝试将从工厂方法所获取的 DateFormat 强制转换为 SimpleDateFormat。这适用于大多数国家/地区;只是要记住将其放入一个 try 代码块中,以防遇到特殊的格式。
构造方法
方法名 | 说明 |
---|---|
protected DateFormat() | 创建一个新的 DateFormat |
方法摘要
返回值 | 方法名 | 说明 |
---|---|---|
Object | clone() | 重写 Cloneable |
boolean | equals(Object obj) | 重写 equals |
String | format(Date date) | 将一个 Date 格式化为日期/时间字符串 |
abstract StringBuffer | format(Date date, StringBuffer toAppendTo, FieldPosition | fieldPosition) |
StringBuffer | format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition) | 重写 Format |
static Locale[] | getAvailableLocales() | 返回所有语言环境的数组,此类的 get*Instance 方法可以为其返回已本地化的实例 |
Calendar | getCalendar() | 获取与此日期/时间格式器关联的日历 |
static | DateFormat getDateInstance() | 获取日期格式器,该格式器具有默认语言环境的默认格式化风格 |
static DateFormat | getDateInstance(int style) | 获取日期格式器,该格式器具有默认语言环境的给定格式化风格 |
static DateFormat | getDateInstance(int style, Locale aLocale) | 获取日期格式器,该格式器具有给定语言环境的给定格式化风格 |
static DateFormat | getDateTimeInstance() | 获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格 |
static DateFormat | getDateTimeInstance(int dateStyle, int timeStyle) | 获取日期/时间格式器,该格式器具有默认语言环境的给定日期和时间格式化风格 |
static DateFormat | getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) | 获取日期/时间格式器,该格式器具有给定语言环境的给定格式化风格 |
static DateFormat | getInstance() | 获取为日期和时间使用 SHORT 风格的默认日期/时间格式器 |
NumberFormat | getNumberFormat() | 获取此日期/时间格式器用于格式化和解析时间的数字格式器 |
static DateFormat | getTimeInstance() | 获取时间格式器,该格式器具有默认语言环境的默认格式化风格 |
static DateFormat | getTimeInstance(int style) | 获取时间格式器,该格式器具有默认语言环境的给定格式化风格 |
static DateFormat | getTimeInstance(int style, Locale aLocale) | 获取时间格式器,该格式器具有给定语言环境的给定格式化风格 |
TimeZone | getTimeZone() | 获取时区 |
int | hashCode() | 重写 hashCode |
boolean | isLenient() | 判断日期/时间解析是否为不严格的 |
Date | parse(String source) | 从给定字符串的开始解析文本,以生成一个日期 |
abstract Date | parse(String source, ParsePosition pos) | 根据给定的解析位置开始解析日期/时间字符串 |
Object | parseObject(String source, ParsePosition pos) | 解析字符串中的文本,以生成一个 Date |
void | setCalendar(Calendar newCalendar) | 设置此日期格式所使用的日历 |
void | setLenient(boolean lenient) | 指定日期/时间解析是否不严格 |
void | setNumberFormat(NumberFormat newNumberFormat) | 允许用户设置数字格式器 |
void | setTimeZone(TimeZone zone) | 为此 DateFormat 对象的日历设置时区 |
使用示例
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
public class DateFormatDemo
{
public static void main(String[] args) throws ParseException
{
// 获取日期格式器,该格式器具有默认语言环境的默认格式化风格
DateFormat dateFormat = DateFormat.getDateInstance();
// 格式化当前时间
System.out.println(dateFormat.format(new Date()));
// 解析字符串为时间
System.out.println(dateFormat.parse("2015-12-26"));
// 获取时间格式器,该格式器具有默认语言环境的默认格式化风格。
DateFormat timeFormat = DateFormat.getTimeInstance();
// 格式化当前时间
System.out.println(timeFormat.format(new Date()));
// 解析字符串为时间
System.out.println(timeFormat.parse("21:40:02"));
}
}
运行结果(以实际为准):
2015-12-26
Sat Dec 26 00:00:00 CST 2015
21:49:37
Thu Jan 01 21:40:02 CST 1970
2015-12-26 21:49:37
Sat Dec 26 21:49:21 CST 2015
java.text.SimpleDateFormat
上面介绍的DateFormat是日期格式化中最基本的方式,我们在实际应用开发中,使用最多的是SimpleDateFormat,而非DateFormat,SimpleDateFormat更加便捷。
SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat使得可以选择任何用户定义的日期-时间格式的模式。可以根据需要使用 applyPattern 方法来修改格式模式。
日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串中,未加引号的字母 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (‘)引起来,以免进行解释。”””表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。
定义了以下模式字母(所有其他字符 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’ 都被保留):
字母 | 日期或时间元素 | 表示 | 示例 |
---|---|---|---|
G | Era | 标志符 | Text |
y | 年 | Year | 1996; |
M | 年中的月份 | Month | July; Jul; 07 |
w | 年中的周数 | Number | 27 |
W | 月份中的周数 | Number | 2 |
D | 年中的天数 | Number | 189 |
d | 月份中的天数 | Number | 10 |
F | 月份中的星期 | Number | 2 |
E | 星期中的天数 | Text | Tuesday; Tue |
a | Am/pm 标记 | Text | PM |
H | 一天中的小时数(0-23) | Number | 0 |
k | 一天中的小时数(1-24) | Number | 24 |
K | am/pm 中的小时数(0-11) | Number | 0 |
h | am/pm 中的小时数(1-12) | Number | 12 |
m | 小时中的分钟数 | Number | 30 |
s | 分钟中的秒数 | Number | 55 |
S | 毫秒数 | Number | 978 |
z | 时区 | General time zone | Pacific Standard Time; PST; GMT-08:00 |
Z | 时区 | RFC 822 time zone | -0800 |
构造方法
方法名 | 说明 |
---|---|
SimpleDateFormat() | 用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat |
SimpleDateFormat(String pattern) | 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat |
SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols) | 用给定的模式和日期符号构造 SimpleDateFormat |
SimpleDateFormat(String pattern, Locale locale) | 用给定的模式和给定语言环境的默认日期格式符号构造 SimpleDateFormat |
方法摘要
返回值 | 方法名 | 说明 |
---|---|---|
void | applyLocalizedPattern(String pattern) | 将给定的本地化模式字符串应用于此日期格式 |
void | applyPattern(String pattern) | 将给定模式字符串应用于此日期格式 |
Object | clone() | 创建此 SimpleDateFormat 的一个副本 |
boolean | equals(Object obj) | 比较给定对象与此 SimpleDateFormat 的相等性 |
StringBuffer | format(Date date, StringBuffer toAppendTo, FieldPosition pos) | 将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer |
AttributedCharacterIterator | formatToCharacterIterator(Object obj) | 格式化生成 AttributedCharacterIterator 的对象 |
Date | get2DigitYearStart() | 返回在 100 年周期内被解释的两位数字年份的开始日期 |
DateFormatSymbols | getDateFormatSymbols() | 获取此日期格式的日期和时间格式符号的一个副本 |
int | hashCode() | 返回此 SimpleDateFormat 对象的哈希码值 |
Date | parse(String text, ParsePosition pos) | 解析字符串的文本,生成 Date |
void | set2DigitYearStart(Date startDate) | 设置 100 年周期的两位数年份,该年份将被解释为从用户指定的日期开始 |
void | setDateFormatSymbols(DateFormatSymbols newFormatSymbols) | 设置此日期格式的日期和时间格式符号 |
String | toLocalizedPattern() | 返回描述此日期格式的本地化模式字符串 |
String | toPattern() | 返回描述此日期格式的模式字符串 |
使用示例
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo
{
public static void main(String[] args) throws ParseException
{
// 获得当前时间
Date now = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 格式化当前时间
System.out.println(dateFormat.format(now));
// 解析
System.out.println(dateFormat.parse("2015-12-26 22:04:55"));
}
}
运行结果(以实际为准):
2015-12-26 22:04:55
Sat Dec 26 22:04:55 CST 2015
数值格式化
java.text.NumberFormat
NumberFormat是所有数值格式的抽象基类。此类提供格式化和解析数值的接口。NumberFormat还提供了一些方法来确定哪些语言环境具有数值格式,以及它们的名称是什么。
NumberFormat可用于格式化和解析任何语言环境的数值。使代码能够完全独立于小数点、千位分隔符甚至所用特定小数位数的语言环境约定,并与数值格式是否为偶小数无关。
构造方法
方法名 | 说明 |
---|---|
protected NumberFormat() | 唯一的构造方法 |
方法摘要
返回值 | 方法名 | 说明 |
---|---|---|
Object | clone() | 重写 Cloneable |
boolean | equals(Object obj) | 重写 equals |
String | format(double number) | 格式规范 |
abstract StringBuffer | format(double number, StringBuffer toAppendTo, FieldPosition pos) | 格式规范 |
String | format(long number) | 格式规范 |
abstract StringBuffer | format(long number, StringBuffer toAppendTo, FieldPosition pos) | 格式规范 |
StringBuffer | format(Object number, StringBuffer toAppendTo, FieldPosition pos) | 格式化一个数并将所得文本添加到给定字符串缓冲区 |
static Locale[] | getAvailableLocales() | 返回一个数组,它包含所有此类的 get*Instance 方法可以为其返回本地化实例的语言环境 |
Currency | getCurrency() | 获取格式化货币值时此数值格式使用的货币 |
static NumberFormat | getCurrencyInstance() | 返回当前默认语言环境的货币格式 |
static NumberFormat | getCurrencyInstance(Locale inLocale) | 返回指定语言环境的货币格式 |
static NumberFormat | getInstance() | 返回当前默认语言环境的通用数值格式 |
static NumberFormat | getInstance(Locale inLocale) | 返回指定语言环境的通用数值格式 |
static NumberFormat | getIntegerInstance() | 返回当前默认语言环境的整数格式 |
static NumberFormat | getIntegerInstance(Locale inLocale) | 返回指定语言环境的整数格式 |
int | getMaximumFractionDigits() | 返回数的小数部分所允许的最大位数 |
int | getMaximumIntegerDigits() | 返回数的整数部分所允许的最大位数 |
int | getMinimumFractionDigits() | 返回数的小数部分所允许的最小位数 |
int | getMinimumIntegerDigits() | 返回数的整数部分所允许的最小位数 |
static NumberFormat | getNumberInstance() | 返回当前默认语言环境的通用数值格式 |
static NumberFormat | getNumberInstance(Locale inLocale) | 返回指定语言环境的通用数值格式 |
static NumberFormat | getPercentInstance() | 返回当前默认语言环境的百分比格式 |
static NumberFormat | getPercentInstance(Locale inLocale) | 返回指定语言环境的百分比格式 |
RoundingMode | getRoundingMode() | 获取在此 NumberFormat 中使用的 RoundingMode |
int | hashCode() | 重写 hashCode |
boolean | isGroupingUsed() | 如果此格式中使用了分组,则返回 true |
boolean | isParseIntegerOnly() | 如果此格式只将数作为整数解析,则返回 true |
Number | parse(String source) | 解析给定字符串开头的文本,生成一个数值 |
abstract Number | parse(String source, ParsePosition parsePosition) | 如果可能则返回 Long (例如,在 [Long.MIN_VALUE, Long.MAX_VALUE] 范围内且没有小数),否则返回 Double |
Object | parseObject(String source, ParsePosition pos) | 解析字符串中的文本,以生成一个 Number |
void | setCurrency(Currency currency) | 设置格式化货币值时此数值格式使用的货币 |
void | setGroupingUsed(boolean newValue) | 设置此格式中是否使用分组 |
void | setMaximumFractionDigits(int newValue) | 设置数的小数部分所允许的最大位数 |
void | setMaximumIntegerDigits(int newValue) | 设置数的整数部分所允许的最大位数 |
void | setMinimumFractionDigits(int newValue) | 设置数的小数部分所允许的最小位数 |
void | setMinimumIntegerDigits(int newValue) | 设置数的整数部分所允许的最小位数 |
void | setParseIntegerOnly(boolean value) | 设置数是否应该仅作为整数进行解析 |
void | setRoundingMode(RoundingMode roundingMode) | 设置在此 NumberFormat 中使用的 RoundingMode |
使用示例
import java.text.NumberFormat;
import java.text.ParseException;
public class NumberFormatDemo
{
public static void main(String[] args) throws ParseException
{
double d = 0.51234;
// 当前默认语言环境的货币格式
NumberFormat currency = NumberFormat.getCurrencyInstance();
System.out.println(currency.format(d));
// 当前默认语言环境的整数格式
NumberFormat integer = NumberFormat.getIntegerInstance();
System.out.println(integer.format(d));
// 当前默认语言环境的通用数值格式
NumberFormat number = NumberFormat.getNumberInstance();
System.out.println(number.format(d));
// 当前默认语言环境的百分比格式
NumberFormat percent = NumberFormat.getPercentInstance();
System.out.println(percent.format(d));
}
}
运行结果:
¥0.51
1
0.512
51%
java.text.DecimalFormat
DecimalFormat与NumberFormat的关系就好像SimpleDateFormat与DateFormat之间的关系。
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。
- 特殊模式字符
模式中的很多字符都是按字面解释的;在解析期间对其进行匹配,在格式化期间则不经改变地输出。另一方面,特殊字符代表了其他字符、字符串或字符类。如果要将其作为字面量出现在前缀或后缀中,那么除非另行说明,否则必须对其加引号。
下列字符用在非本地化的模式中。已本地化的模式使用从此格式器的 DecimalFormatSymbols 对象中获得的相应字符,这些字符已失去其特殊状态。两种例外是货币符号和引号,不将其本地化。
符号 | 位置 | 本地化? | 含义 |
---|---|---|---|
0 | 数字 | 是 | 阿拉伯数字 |
# | 数字 | 是 | 阿拉伯数字,如果不存在则显示为 0 |
. | 数字 | 是 | 小数分隔符或货币小数分隔符 |
- | 数字 | 是 | 减号 |
, | 数字 | 是 | 分组分隔符 |
E | 数字 | 是 | 分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号 |
; | 子模式边界 | 是 | 分隔正数和负数子模式 |
% | 前缀或后缀 | 是 | 乘以 100 并显示为百分数 |
\u2030 | 前缀或后缀 | 是 | 乘以 1000 并显示为千分数 |
¤ (\u00A4) | 前缀或后缀 | 否 | 货币记号,由货币符号替换。如果两个同时出现,则用国际货币符号替换。如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符 |
‘ | 前缀或后缀 | 否 | 用于在前缀或或后缀中为特殊字符加引号,例如 “’#’#” 将 123 格式化为 “#123”。要创建单引号本身,请连续使用两个单引号:”# o”clock” |
- 科学计数法
科学计数法中的数表示为一个尾数和一个 10 的几次幂的乘积,例如可将 1234 表示为 1.234 x 10^3。尾数的范围通常是 1.0 <= x < 10.0,但并非必需如此。可指示 DecimalFormat 仅通过某个模式 来格式化和解析科学计数法表示的数;目前没有创建科学计数法格式的工厂方法。在这个模式中,指数字符后面紧跟着一个或多个数字字符即指示科学计数法。示例:”0.###E0” 将数字 1234 格式化为 “1.234E3”。
- 指数字符后面的数字位数字符数给出了最小的指数位数。没有最大值。使用本地化的减号来格式化负数指数,不 使用模式中的前缀和后缀。这就允许存在诸如 “0.###E0 m/s” 等此类的模式。
- 最小和最大整数数字位数一起进行解释:
如果最大整数数字位数大于其最小整数数字位数并且大于 1,则强制要求指数为最大整数数字位数的倍数,并将最小整数数字位数解释为 1。最常见的用法是生成工程计数法,其中指数是 3 的倍数,如 “##0.#####E0”。使用此模式时,数 12345 格式化为 “12.345E3”,123456 则格式化为 “123.456E3”。
否则通过调整指数来得到最小整数数字位数。示例:使用 “00.###E0” 格式化 0.00123 时得到 “12.3E-4”。 - 尾数中的有效位数是最小整数 和最大小数 位数的和,不受最大整数位数的影响。例如,使用 “##0.##E0” 格式化 12345 得到 “12.3E3”。要显示所有位数,请将有效位数计数设置为零。有效位数不会影响解析。
- 数模式可能不包含分组分隔符。
- 舍入
DecimalFormat 提供 RoundingMode 中定义的舍入模式进行格式化。默认情况下,它使用 RoundingMode.HALF_EVEN。 - 阿拉伯数字
为了进行格式化,DecimalFormat 使用 DecimalFormatSymbols 对象中所定义的、从已本地化的阿拉伯数字 0 开始的 10 个连续字符作为阿拉伯数字。为了进行解析,可识别 Character.digit 所定义的这些阿拉伯数字和所有 Unicode 十进制阿拉伯数字。 - 特殊值
NaN 被格式化为一个字符串,通常具有单个字符 \uFFFD。此字符串由 DecimalFormatSymbols 对象所确定。这是唯一不使用前缀和后缀的值。
无穷大的值被格式化为一个字符串,通常具有单个字符 \u221E,具有正数或负数前缀和后缀。无穷大值的字符串由 DecimalFormatSymbols 对象所确定。
将负零(”-0”)解析为:
- 如果 isParseBigDecimal() 为 true,则为 BigDecimal(0),
- 如果 isParseBigDecimal() 为 false 并且 isParseIntegerOnly() 为 true,则为 Long(0),
- 如果 isParseBigDecimal() 和 isParseIntegerOnly() 均为 false,则为 Double(-0.0)。
构造方法
方法名 | 说明 |
---|---|
DecimalFormat() | 使用默认模式和默认语言环境的符号创建一个 DecimalFormat |
DecimalFormat(String pattern) | 使用给定的模式和默认语言环境的符号创建一个 DecimalFormat |
DecimalFormat(String pattern, DecimalFormatSymbols symbols) | 使用给定的模式和符号创建一个 DecimalFormat。 |
方法摘要
返回值 | 方法名 | 说明 |
---|---|---|
void | applyLocalizedPattern(String pattern) | 将给定的模式应用于此 Format 对象 |
void | applyPattern(String pattern) | 将给定的模式应用于此 Format 对象 |
Object | clone() | 标准重写;没有语义上的变化 |
boolean | equals(Object obj) | 重写 equals |
StringBuffer | format(double number, StringBuffer result, FieldPosition fieldPosition) | 格式化一个 double 值,以生成一个字符串 |
StringBuffer | format(long number, StringBuffer result, FieldPosition fieldPosition) | 格式化一个 long 值,以生成一个字符串 |
StringBuffer | format(Object number, StringBuffer toAppendTo, FieldPosition pos) | 格式化一个数,并将所得文本追加到给定的字符串缓冲区 |
AttributedCharacterIterator | formatToCharacterIterator(Object obj) | 格式化一个 Object,以生成一个 AttributedCharacterIterator |
Currency | getCurrency() | 获取格式化货币值时,此十进制格式使用的货币 |
DecimalFormatSymbols | getDecimalFormatSymbols() | 返回小数格式符号的一个副本,通常程序员或用户不改变此副本 |
int | getGroupingSize() | 返回分组大小 |
int | getMaximumFractionDigits() | 获取某个数的小数部分中所允许的最大数字位数 |
int | getMaximumIntegerDigits() | 获取某个数的整数部分中所允许的最大数字位数 |
int | getMinimumFractionDigits() | 获取某个数的小数部分中所允许的最小数字位数 |
int | getMinimumIntegerDigits() | 获取某个数的整数部分中所允许的最小数字位数 |
int | getMultiplier() | 获取百分数、千分数和类似格式中使用的乘数 |
String | getNegativePrefix() | 获取负数前缀 |
String | getNegativeSuffix() | 获取负数后缀 |
String | getPositivePrefix() | 获取正数前缀 |
String | getPositiveSuffix() | 获取正数后缀 |
RoundingMode | getRoundingMode() | 获取在此 DecimalFormat 中使用的 RoundingMode |
int | hashCode() | 重写 hashCode |
boolean | isDecimalSeparatorAlwaysShown() | 允许获取整数中小数分隔符的行为 |
boolean | isParseBigDecimal() | 返回 parse(java.lang.String, java.text.ParsePosition) 方法是否返回 BigDecimal |
Number | parse(String text, ParsePosition pos) | 解析字符串中的文本,以生成一个 Number |
void | setCurrency(Currency currency) | 设置格式化货币值时,此数字格式使用的货币 |
void | setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) | 设置小数格式符号,通常程序员或用户不改变此符号 |
void | setDecimalSeparatorAlwaysShown(boolean newValue) | 允许设置整数中小数分隔符的行为 |
void | setGroupingSize(int newValue) | 设置分组大小 |
void | setMaximumFractionDigits(int newValue) | 设置某个数的小数部分中所允许的最大数字位数 |
void | setMaximumIntegerDigits(int newValue) | 设置某个数字的整数部分中所允许的最大数字位数 |
void | setMinimumFractionDigits(int newValue) | 设置某个数的小数部分中所允许的最小数字位数 |
void | setMinimumIntegerDigits(int newValue) | 设置某个数字的整数部分中所允许的最小数字位数 |
void | setMultiplier(int newValue) | 设置百分数、千分数和类似格式中使用的乘数 |
void | setNegativePrefix(String newValue) | 设置负数前缀 |
void | setNegativeSuffix(String newValue) | 设置负数后缀 |
void | setParseBigDecimal(boolean newValue) | 设置 parse(java.lang.String, java.text.ParsePosition) 方法是否返回 BigDecimal |
void | setPositivePrefix(String newValue) | 设置正数前缀 |
void | setPositiveSuffix(String newValue) | 设置正数后缀 |
void | setRoundingMode(RoundingMode roundingMode) | 设置在此 DecimalFormat 中使用的 RoundingMode |
String | toLocalizedPattern() | 合成一个表示此 Format 对象当前状态的、已本地化的模式字符串 |
String | toPattern() | 合成一个表示此 Format 对象当前状态的模式字符串 |
使用示例
import java.text.DecimalFormat;
import java.text.ParseException;
public class DecimalFormatDemo
{
public static void main(String[] args) throws ParseException
{
double d = 0.51;
DecimalFormat format1 = new DecimalFormat("00.000");
System.out.println(format1.format(d));
DecimalFormat format2 = new DecimalFormat("#0.000");
System.out.println(format2.format(d));
DecimalFormat format3 = new DecimalFormat("0.###");
System.out.println(format3.format(d));
}
}
运行结果:
00.510
0.510
0.51