Java字符串+日期+数字格式化输出.docx

上传人:b****5 文档编号:11806062 上传时间:2023-04-02 格式:DOCX 页数:8 大小:17.24KB
下载 相关 举报
Java字符串+日期+数字格式化输出.docx_第1页
第1页 / 共8页
Java字符串+日期+数字格式化输出.docx_第2页
第2页 / 共8页
Java字符串+日期+数字格式化输出.docx_第3页
第3页 / 共8页
Java字符串+日期+数字格式化输出.docx_第4页
第4页 / 共8页
Java字符串+日期+数字格式化输出.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

Java字符串+日期+数字格式化输出.docx

《Java字符串+日期+数字格式化输出.docx》由会员分享,可在线阅读,更多相关《Java字符串+日期+数字格式化输出.docx(8页珍藏版)》请在冰豆网上搜索。

Java字符串+日期+数字格式化输出.docx

Java字符串+日期+数字格式化输出

Java字符串日期数字格式化输出

在C中可以使用类似printf(“%d%8.2f\\n”,1001,52.335的方法实现格式化输出,可是Java中的System.out.println(并没有对应的功能。

要格式化输出,必须使用java.text包中的类来实现类似的操作(要不怎么体现面向对象的优越性呢,不过据说jdk1.5准备又补上。

当然了,java.text包的功能还是很强大的,奇怪的是很多书中都没有涉及,而一般谁又有工夫整天去看API?

注意:

由于这里说得很简略,因此请参照下面的Demo程序。

格式化数字

在NumberFormat类中为我们提供了格式化4种数字的方法:

整数、小数、货币和百分比,通过工厂方法getNumberInstance,getNumberIntance,getCurrencyInstance,getPercentInstance方法获得相应的实例对象就行。

例如我们要以字符串表示人民币88888.88元,这样来写就行:

NumberFormatnf=NumberFormat.getCurrencyInstance(;

System.out.println(nf.format(88888.88;

定制格式化数字

可是对于稍微复杂一点的需求,NumberFormat就满足不了了,幸好java还提供了DecimalFormat实现定制的格式化。

要使用DecimalFormat对象,必须提供给它提供一个格式化的模式(pattern:

Stringpattern=…

DecimalFormatdf=newDecimalFormat(pattern;

或者:

DecimalFormatdf=newDecimalFormat(;

df.applyPattern(pattern;

然后就调用它的format方法就行了。

所以关键就是这个模式怎么定义。

在DecimalFormat类的JavaDoc中有模式的语法表示,不过很难说清楚(是我说不清楚,呵呵,请看看Demo自己多试试吧。

下面是模式中某些字符的含义表:

字符

含义

一位数字,这一位缺失显示为0。

用来补零

#

一位数字,这一位缺失就不显示

.

小数点,不用多说了吧

千位分隔符

E

科学计数法

%

百分比

格式化日期

把日期转化为字符串最简单的方法就是调用Date类的toString或者toLocaleString方法:

System.out.println(newDate(;

输出:

2004-8-78:

16:

14。

可是如果我们想把月和日补成2位不要时分秒2004-08-07,这就不灵了。

java.text.DateFormat提供了大量的工厂方法:

getDateInstance(intstyle,getTimeInstance(intstyle,getDateTimeInstance(intdateStyle,inttimeStyle等等。

其中style必须是DateFormat.LONG,DateFormat.MEDIUM,DateFormat.SHORT之一。

Demo中的defaultDateFormat方法作了一个简单的实验。

定制格式化日期:

同样,java.text.SimpleDateFormat可以通过模式(pattern实现定制格式化:

Stringpattern=…

SimpleDateFormatdf=newSimpleDateFormat(pattern;

或者:

SimpleDateFormatdf=newSimpleDateFormat(;

df.applyPattern(pattern;

下面是SimpleDateFormat的javadoc中的一个模式符号简表:

符号

意义

合法数值

示例

y

Year

Year

1996;96

M

Monthinyear

Month

July;Jul;07

d[Page]

Dayinmonth

Number

10

a

Am/pmmarker

Text

PM

H

Hourinday(0-23

Number

h

Hourinam/pm(1-12

Number

12

m

Minuteinhour

Number

30

s

Secondinminute

Number

55

S

Millisecond

Number

978

z

Timezone

Generaltimezone

PacificStandardTime;PST;GMT-08:

00

Z

Timezone

RFC822timezone

-0800

注意的是,符号的大小写意义是不同的,符号的个数也会导致输出不一样。

例如用MM就会把1月份显示成01,而用M则不会补零。

对于年份,两个yy会只输出两位年份,yyyy则会输出4位年份。

实际上,上面的类还提供了很多其他方法,特别是用于本地化(Locale定制格式化的方法,以及从字符串表示转化为相应对象的parse方法,还有把格式化结果附加到一个StringBuffer的方法(应该是用来提高性能。

最后是一个小Demo和输出结果:

TestFormat.java:

importjava.text.*;

importjava.util.*;

publicclassTestFormat{

publicstaticvoidmain(String[]args{

defaultNumberFormat(;

System.out.println(;

customNumberFormat(;

System.out.println(;

defaultDateFormat(;

System.out.println(;

customDateFormat(;

System.out.println(;

}

publicstaticvoiddefaultNumberFormat({

inti=123456;

doublex=882323.23523;

doublep=0.528;

doublec=52.83;[Page]

NumberFormatnf=NumberFormat.getInstance(;

System.out.println(\"Integer\"+i+\"isdisplayedas\"+nf.format(i;

System.out.println(\"Double\"+x+\"isdisplayedas\"+nf.format(x;

NumberFormatnfInt=NumberFormat.getIntegerInstance(;

System.out.println(\"Integer\"+i+\"isdisplayedas\"+nfInt.format(i;

NumberFormatnfNumber=NumberFormat.getNumberInstance(;

System.out.println(\"Double\"+x+\"isdisplayedas\"+nfNumber.format(x;

NumberFormatnfPercent=NumberFormat.getPercentInstance(;

System.out.println(\"Percent\"+p+\"isdisplayedas\"+nfPercent.format(p;

NumberFormatnfCurrency=NumberFormat.getCurrencyInstance(;

System.out.println(\"Currency\"+p+\"isdisplayedas\"+nfCurrency.format(c;

//这里没有涉及相应的parse方法

}

publicstaticvoidcustomNumberFormat({

doublex=1000.0/3;

System.out.println(\"defaultoutputis\"+x;

patternPrint(\"###,###.##\",x;

patternPrint(\"####.##\",x;

patternPrint(\"####.00\",x;

patternPrint(\"####.0#\",x;[Page]

patternPrint(\"00000.##\",x;

patternPrint(\"$###,###.##\",x;

patternPrint(\"0.###E0\",x;

patternPrint(\"00.##%\",x;

doubley=23.0012;

System.out.println(\"defaultoutputis\"+y;

patternPrint(\"###,###.##\",y;

patternPrint(\"####.##\",y;

patternPrint(\"####.00\",y;

patternPrint(\"####.0#\",y;

patternPrint(\"00000.##\",y;

patternPrint(\"$###,###.##\",y;

patternPrint(\"0.###E0\",y;

patternPrint(\"00.##%\",y;

}

publicstaticvoidpatternPrint(Stringpattern,doublex{

DecimalFormatdf=newDecimalFormat(pattern;

System.out.println(\"outputforpattern\"+pattern+\"is\"+df.format(x;

}

publicstaticvoiddefaultDateFormat({

Datedate=newDate(;

System.out.println(\"simpledate\"+

date.toLocaleString(;

DateFormatdf=DateFormat.getDateTimeInstance(;

System.out.println(df.format(date;

DateFormatdfLong=

DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG;System.out.println(dfLong.format(date;

DateFormatdfMedium=

DateFormat.getDateTimeInstance(DateFormat.MEDIUM,[Page]

DateFormat.MEDIUM;

System.out.println(dfMedium.format(date;

DateFormatdfShort=

DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT;System.out.println(dfShort.format(date;

}

publicstaticvoidcustomDateFormat({

Datedate=newDate(;

patternPrint(\"yyyy.MM.ddHH:

mm:

ssz\",date;//两个MM,dd会导致补零

patternPrint(\"yy年M月d日HH时mm分\",date;//两个yy就显示为两位年份

patternPrint(\"EEE,MMMd,’’yy\",date;

patternPrint(\"h:

mma\",date;

patternPrint(\"hh’o’’clock’a,zzzz\",date;

patternPrint(\"yyyyy.MMMMM.ddGGGhh:

mmaaa\",date;

patternPrint(\"EEE,dMMMyyyyHH:

mm:

ssZ\",date;

patternPrint(\"yyMMddHHmmssZ\",date;

}

publicstaticvoidpatternPrint(Stringpattern,Datedate{

SimpleDateFormatdf=newSimpleDateFormat(pattern;

System.out.println(df.format(date;

}

}

输出:

Integer123456isdisplayedas123,456

Double882323.23523isdisplayedas882,323.235

Integer123456isdisplayedas123,456

Double882323.23523isdisplayedas882,323.235

Percent0.528isdisplayedas53%

Currency0.528isdisplayedas¥52.83

defaultoutputis333.3333333333333

outputforpattern###,###.##is333.33

outputforpattern####.##is333.33[Page]outputforpattern####.00is333.33

outputforpattern####.0#is333.33

outputforpattern00000.##is00333.33

outputforpattern$###,###.##is$333.33outputforpattern0.###E0is3.333E2

outputforpattern00.##%is33333.33%

defaultoutputis23.0012

outputforpattern###,###.##is23

outputforpattern####.##is23

outputforpattern####.00is23.00

outputforpattern####.0#is23.0

outputforpattern00000.##is00023

outputforpattern$###,###.##is$23

outputforpattern0.###E0is2.3E1

outputforpattern00.##%is2300.12%

simpledate2004-8-78:

16:

14

2004-8-78:

16:

14

2004年8月7日上午08时16分14秒

2004-8-78:

16:

1404-8-7上午8:

162004.08.0708:

16:

14GMT+08:

0004年8月7日08时16分星期六,八月7,’048:

16上午08o’clock上午,GMT+08:

0002004.八月.07公元08:

16上午星期六,7八月200408:

16:

14+0800040807081614+0800

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1