Java数据格式化问题

作者: are_you_不服 | 来源:发表于2016-12-04 14:31 被阅读64次

1.时间类型格式化


1-1.Date(日期)

        Date类是一个非抽象类,也就是具体类,那么就可以将其实例化,实例化会使用系统的当前日期和时间创建一个日期对象,这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间,通过Date类的get方法可以拿到我们想要的具体数据,也可以通过set方法来设置特定的时间和日期。要注意的是通过get方法拿到的某些值是与1999年01月01日0时0分的相对值。比如现在如果是2016年,那么下图代码的输出为116。

图(1)

        我们可以发现这个getYear()方法上有一个横线,其实Date的好多方法都是如此,原因是不被推荐使用,而被推荐的是使用Calendar类来达到相关的目的。

1-2.Calendar(日历)

        Calendar类是一个抽象类,通常通过getInstance()方法得到一个当前时区,当前语言设置下的实例。

Calendar cal = Calendar.getInstance();

int year = cal.get(Calendar.YEAR);

int month = cal.get(Calendar.MONTH);

         现在是2016年12月,那么year的值为2016,month的值为11(一月是0)。

         我们也可以通过其set方法设置我们想要的时间和日期。要注意的是通过Date类和Calendar类的set方法设置日期时间后,再通过get方法拿到的是我们设置的时间和日期。

图(2)

         图(2)year和month的值为2015和5(6月)。

1-3.DateFormat(日期格式)

        DateFormat类也是一个抽象类,通常使用其具体子类SimpleDateFormat来对日期类型(Date类型)进行格式化,使用其构造方法实例化一个SimpleDateFormat,并给出想要的格式就可以对Date类型进行格式化了。

图(3)

Sun Dec 04 13:25:14 CST 2016

2016-12-04 13:25:14

2.数字格式化和精度


2-1.使用NumberFormat

       NumberFormat.getInstance()方法返回NumberFormat的一个实例(实际上是NumberFormat具体的一个子类,例如DecimalFormat),  这适合根据本地设置格式化一个数字。可以使用非缺省的地区设置,例如德国。然后格式化方法根据特定的地区规则格式化数字。

NumberFormat nf =NumberFormat.getInstance(Locale.CHINA);

nf.format(1234567.12345)

        如果将这个值输出,则为123,456.123,默认四舍五入保留三位小数。显然这种方法不好用且有一定的缺陷。

2-2.使用DecimalFormat

        DecimalFormat是一个具体类,用法和SimpleDateFormat相似,通过其构造方法实例化,并给出想要的格式。

2-2-1.格式化数字

DecimalFormat df0 = new DecimalFormat();

System.out.println(df0.format(123456));

因为本地是中国,则输出为123,456,可以设置不同的国家,来得到相应的格式。

Locale.setDefault(Locale.GERMAN);

DecimalFormat df0 = new DecimalFormat();

System.out.println(df0.format(123456));

设置为德国风格,则输出为123.456。(中国的为一撇,德国的为一点)

2-2-2.数字精度

DecimalFormat  df1  =  new  DecimalFormat(".000");

System.out.println(df1.format(1234.56));

输出为1234.560。也可以使用像"####.000"的符号。这个模式意味着在小数点前有四个数字,如果不够就空着,小数点后有三位数字,不足用0补齐。

DecimalFormat df0 = new DecimalFormat();

DecimalFormat df1 = new DecimalFormat(".00");

String i = df1.format(123456.12345);

System.out.println(i);

System.out.println(df0.format(Double.parseDouble(i)));

输出分别为:123456.12

                      123,456.12

2-2-3.科学计数法

DecimalFormat  df  =  new  DecimalFormat("0.00E0");

System.out.println(df.format(1234000000000000.56));

输出为:1.23E15。

NumberFormat nf = NumberFormat.getPercentInstance();

System.out.println(nf.format(0.45022));

输出为:45%。

NumberFormat nf = NumberFormat.getPercentInstance();

nf.setMinimumFractionDigits(2);

System.out.println(nf.format(0.45022));

输出为:45.02%。

相关文章

  • Java数据格式化问题

    1.时间类型格式化 1-1.Date(日期) Date类是一个非抽象类,也就是具体类,那么就可以将其实例化...

  • 数字格式化

    数字格式化操作主要针对的是浮点型数据,包括double型和float型数据。 在Java中没有格式化的数据遵循以下...

  • 系统学习 Java IO (十一)----打印流 PrintSt

    目录:系统学习 Java IO---- 目录,概览 PrintStream 类可以将格式化数据写入底层 Outpu...

  • N7.数字处理类

    1.数字格式化 在java中使用java.text.DecimalFormat格式化数字。DecimalF...

  • 优雅编程 - 日期处理

    日期格式化 java.util.date和java.time.LocalDateTime格式化 应用示例 示例测试...

  • 数字格式化

    数字的格式化在解决实际问题时使用非常普遍,如表示某超市商品价格,需要保留两位有效数字。Java主要对浮点型数据进行...

  • U盘格式化?1招让数据快速恢复!

    U盘格式化想必是大家都遇到过的问题,那么U盘格式化后就会有数据丢失的大问题,如何快速恢复数据是大家最为关心的。今天...

  • 时间

    Java 日期时间格式化

  • Java字符串格式化

    相关阅读 Java基础:String类 Java字符串格式化 Java基础:正则表达式 1. 常规类型的格式化 S...

  • javaScript问题解决

    1.数据库是时间戳,java是dataTime,在前台显示一串数字,格式化时间 2.解析json数据嵌套json字...

网友评论

    本文标题:Java数据格式化问题

    本文链接:https://www.haomeiwen.com/subject/jnripttx.html