JAVA面试题解惑系列日期和时间的处理Word文档格式.docx

上传人:b****5 文档编号:21507224 上传时间:2023-01-30 格式:DOCX 页数:25 大小:326.45KB
下载 相关 举报
JAVA面试题解惑系列日期和时间的处理Word文档格式.docx_第1页
第1页 / 共25页
JAVA面试题解惑系列日期和时间的处理Word文档格式.docx_第2页
第2页 / 共25页
JAVA面试题解惑系列日期和时间的处理Word文档格式.docx_第3页
第3页 / 共25页
JAVA面试题解惑系列日期和时间的处理Word文档格式.docx_第4页
第4页 / 共25页
JAVA面试题解惑系列日期和时间的处理Word文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

JAVA面试题解惑系列日期和时间的处理Word文档格式.docx

《JAVA面试题解惑系列日期和时间的处理Word文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA面试题解惑系列日期和时间的处理Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

JAVA面试题解惑系列日期和时间的处理Word文档格式.docx

请看下面的例子:

Java代码1.import2.import3.import4.import5.6.publicclassDateTest7./*8.*以一种较为友好的方式格式化日期时间值9.*10.*paramc11.*日期时间对象12.*return格式化后的日期时间字符串13.*/14.publicstaticStringtoFriendlyString(Calendarc)15.if(c!

=null)16.DateFormatdf=newSimpleDateFormat(yyyy年MM月dd日HH:

mm:

ss);

17.return();

18.19.returnnull;

20.21.22.publicstaticvoidmain(Stringargs)23.Calendarc1=();

24.创建方式:

();

25.日期时间:

+(c1);

26.27.28.Calendarc2=newGregorianCalendar();

29.创建方式:

newGregorianCalendar();

30.日期时间:

+(c2);

31.32.33./参数含义依次为:

年、月、日34.Calendarc3=newGregorianCalendar(2008,8,8);

35.创建方式:

newGregorianCalendar(2008,8,8);

36.日期时间:

+(c3);

37.38.39./参数含义依次为:

年、月、日、时、分40.Calendarc4=newGregorianCalendar(2008,8,8,6,10);

41.创建方式:

newGregorianCalendar(2008,8,8,6,10);

42.日期时间:

+(c4);

43.44.45./参数含义依次为:

年、月、日、时、分、秒46.Calendarc5=newGregorianCalendar(2008,8,8,18,10,5);

47.创建方式:

newGregorianCalendar(2008,8,8,18,10,5);

48.日期时间:

+(c5);

49.50.importclassDateTest/*以一种较为友好的方式格式化日期时间值*paramc*日期时间对象*return格式化后的日期时间字符串*/publicstaticStringtoFriendlyString(Calendarc)if(c!

=null)DateFormatdf=newSimpleDateFormat(yyyy年MM月dd日HH:

return();

returnnull;

publicstaticvoidmain(Stringargs)Calendarc1=();

创建方式:

日期时间:

Calendarc2=newGregorianCalendar();

/参数含义依次为:

年、月、日Calendarc3=newGregorianCalendar(2008,8,8);

年、月、日、时、分Calendarc4=newGregorianCalendar(2008,8,8,6,10);

年、月、日、时、分、秒Calendarc5=newGregorianCalendar(2008,8,8,18,10,5);

运行结果如下:

1.创建方式:

()2.日期时间:

2008年07月22日11:

54:

483.4.创建方式:

newGregorianCalendar()5.日期时间:

486.7.创建方式:

newGregorianCalendar(2008,8,8.日期时间:

2008年09月08日00:

009.10.创建方式:

newGregorianCalendar(2008,8,8,6,10)11.日期时间:

2008年09月08日06:

10:

0012.13.创建方式:

newGregorianCalendar(2008,8,8,18,10,5)14.日期时间:

2008年09月08日18:

05为了便于阅读,我们增加一个toFriendlyString(Calendarc)方法,它将日期时间值格式化为一种更加友好易懂的形式,我们将在接下来的内容中讲解它的实现原理。

分析运行结果后,我们发现有两个地方需要注意:

1.在创建GregorianCalendar对象时,月份值都设定为8,但打印结果都是9月份。

这并不是我们的代码有问题,而是因为JAVA表示的月份是从0开始的,也就是说它用来表示月份的数值总是比实际月份值小1。

因此我们要表示8月份,就是应该设置8-1=7这个值。

2.GregorianCalendar的小时数是24小时制的。

为了避免出现因为忘记处理1的差值而设置了错误的月份,也让代码看起来更加直观,推荐大家使用定义在Calendar类的的这些常量来代替直接用数字表示月份:

一月:

=0二月:

=1三月:

=2四月:

=3五月:

=4六月:

=5七月:

=6八月:

=7九月:

=8十月:

=9十一月:

=10十二月:

=11如果我们想要从Calendar对象获得各种属性的值,就需要调用它的get(intfield)方法,这个方法接收一个int型的参数,并且根据这个给定参数的值来返回相应的属性的值。

该方法的定义如下:

Java代码1.publicintget(intfield)2./othercode3.publicintget(intfield)/othercode我们以一个示例来说明get(intfield)方法所能接受的一些常用参数的含义及用法:

Java代码1.import2.import3.import4.5.publicclassDateTest6./*7.*以一种较为友好的方式格式化日期时间值8.*9.*paramc10.*日期时间对象11.*return格式化后的日期时间字符串12.*/13.publicstaticStringtoFriendlyString(Calendarc)14.if(c!

=null)15.DateFormatdf=newSimpleDateFormat(yyyy年MM月dd日HH:

);

16.return();

17.18.returnnull;

19.20.21.publicstaticvoidmain(Stringargs)22.Calendarc=();

23.当前时刻:

+(c);

24.25.26.属性名称:

27.代表含义:

上下午标识,上午返回=0,下午返回=1);

28.测试结果:

+);

29.30.31.属性名称:

32.代表含义:

一个月中的第几天,同);

33.测试结果:

34.35.36.属性名称:

37.代表含义:

38.测试结果:

39.40.41.属性名称:

42.代表含义:

一周中的第几天,对应星期几,第一天为星期日,于此类推。

43.星期日:

=1);

44.星期一:

=2);

45.星期二:

=3);

46.星期三:

=4);

47.星期四:

=5);

48.星期五:

=6);

49.星期六:

=7);

50.测试结果:

51.52.53.属性名称:

54.代表含义:

这一天所对应的星期几在该月中是第几次出现);

55.测试结果:

56.57.58.属性名称:

59.代表含义:

一年中的第几天);

60.测试结果:

61.62.63.属性名称:

64.代表含义:

12小时制下的小时数,中午和午夜表示为0);

65.测试结果:

66.67.68.属性名称:

69.代表含义:

24小时制下的小时数,午夜表示为0);

70.测试结果:

71.72.73.属性名称:

74.代表含义:

毫秒数);

75.测试结果:

76.77.78.属性名称:

79.代表含义:

分钟);

80.测试结果:

81.82.83.属性名称:

84.代表含义:

月份,从0到11表示12个月份,比实际月份值小1);

85.测试结果:

86.87.88.属性名称:

89.代表含义:

秒);

90.测试结果:

91.92.93.属性名称:

94.代表含义:

一个月中的第几个星期);

95.测试结果:

96.97.98.属性名称:

99.代表含义:

一年中的第几个星期);

100.测试结果:

101.102.103.属性名称:

104.代表含义:

年份);

105.测试结果:

106.107.importclassDateTest/*以一种较为友好的方式格式化日期时间值*paramc*日期时间对象*return格式化后的日期时间字符串*/publicstaticStringtoFriendlyString(Calendarc)if(c!

publicstaticvoidmain(Stringargs)Calendarc=();

当前时刻:

属性名称:

代表含义:

测试结果:

星期日:

星期一:

星期二:

星期三:

星期四:

星期五:

星期六:

12小时制下的小时数,中午和午夜表示为0);

24小时制下的小时数,午夜表示为0);

月份,从0到11表示12个月份,比实际月份值小1);

1.当前时刻:

2008年07月22日13:

16:

2.3.属性名称:

4.代表含义:

上下午标识,上午返回=0,下午返回=15.测试结果:

16.7.属性名称:

8.代表含义:

一个月中的第几天,同9.测试结果:

2210.11.属性名称:

12.代表含义:

一个月中的第几天,同13.测试结果:

2214.15.属性名称:

16.代表含义:

17.星期日:

=118.星期一:

=219.星期二:

=320.星期三:

=421.星期四:

=522.星期五:

=623.星期六:

=724.测试结果:

325.26.属性名称:

这一天所对应的星期几在该月中是第几次出现28.测试结果:

429.30.属性名称:

31.代表含义:

一年中的第几天32.测试结果:

20433.34.属性名称:

35.代表含义:

12小时制下的小时数,中午和午夜表示为036.测试结果:

137.38.属性名称:

39.代表含义:

24小时制下的小时数,午夜表示为040.测试结果:

1341.42.属性名称:

43.代表含义:

毫秒数44.测试结果:

42145.46.属性名称:

47.代表含义:

分钟48.测试结果:

1649.50.属性名称:

51.代表含义:

月份,从0到11表示12个月份,比实际月份值小152.测试结果:

653.54.属性名称:

55.代表含义:

秒56.测试结果:

757.58.属性名称:

一个月中的第几个星期60.测试结果:

461.62.属性名称:

63.代表含义:

一年中的第几个星期64.测试结果:

3065.66.属性名称:

67.代表含义:

年份68.测试结果:

2008其中代表的含义比较难理解一些,它表示“这一天所对应的星期几在该月中是第几次出现”。

比如2008年8月8日是星期五,在它之前的8月1日也是星期五,因此它是8月份的第二个星期五。

所以这时调用get就会返回2。

这里存在一个简单易记的规律:

对于每月的1-7号,它们一定占全了星期一到星期日,所以不管是它们中的哪一天,也不管这一天是星期几,它总是第一个,因此返回1;

8-14号也同样占全了星期一到星期日,但由于1-7号的关系,对于它们总是返回2;

以此类推,15-21号返回3,22-28号返回4,29-31号返回5。

Calendar对象和Date对象可以通过Calendar类的如下两个方法进行相互转换:

Java代码1.publicfinalDategetTime()2./othercode3.4.5.publicfinalvoidsetTime(Datedate)6./othercode7.publicfinalDategetTime()/othercodepublicfinalvoidsetTime(Datedate)/othercode日期格式化与解析我们回头再来看看在上面的例子中定义的toFriendlyString(Calendarc)方法,它将一个Calendar对象的日期时间值以一种很友好的方式来展现,使人们很容易看懂,也符合我们中国人的习惯。

这完全得益于抽象类DateFormat以及它的子类实体类SimpleDateFormat的帮助。

这两个类都位于包中,是专门用于日期格式化和解析的类。

而这两项工作的核心就是我们为此设定的Pattern,我们可以称之为“日期格式表达式”。

理论上讲日期格式表达式包含全部26个英文字母的大小写,不过它们中的一些字母只是被预留了,并没有确切的含义。

目前有效的字母及它们所代表的含义如下:

G:

年代标识,表示是公元前还是公元后y:

年份M:

月份d:

日h:

小时,从1到12,分上下午H:

小时,从0到23m:

分钟s:

秒S:

毫秒E:

一周中的第几天,对应星期几,第一天为星期日,于此类推z:

时区D:

一年中的第几天F:

这一天所对应的星期几在该月中是第几次出现w:

一年中的第几个星期W:

一个月中的第几个星期a:

上午/下午标识k:

小时,从1到24K:

小时,从0到11,区分上下午在日期格式表达式中出现的所有字母,在进行日期格式化操作后,都将被其所代表的含义对应的属性值所替换,并且对某些字母来说,重复次数的不同,格式化后的结果也会有所不同。

Java代码1.import2.import3.4.publicclassDateTest5.publicstaticvoidmain(Stringargs)6./使用系统当前日期时间值创建一个Date对象7.Datenow=newDate();

8.9./创建一个日期格式表达式10.Stringpattern=年代:

G;

年份:

y;

月份:

M;

日:

d;

时(112):

h;

时(023):

H;

分:

m;

秒:

s;

毫秒:

S;

星期:

E;

上/下午:

a;

时区:

z;

11./使用日期格式表达式创建一个SimpleDateFormat对象12.SimpleDateFormatdf=newSimpleDateFormat(pattern);

13./调用SimpleDateFormat类的format(Datedate)方法对Date对象进行格式化,并返回格式化后的字符串。

14./该方法继承自类15.1位:

+(now);

16.17./创建一个新的日期格式表达式18.pattern=年代:

GG;

yy;

MM;

dd;

hh;

HH;

mm;

ss;

SS;

EE;

aa;

zz;

19./调用SimpleDateFormat的applyPattern(Stringpattern)方法用新创建的日期格式表达式替换其原有的20.(pattern);

21.2位:

22.23.pattern=年代:

GGG;

yyy;

MMM;

ddd;

hhh;

HHH;

mmm;

sss;

SSS;

EEE;

aaa;

zzz;

24.(pattern);

25.3位:

26.27.pattern=年代:

GGGG;

yyyy;

MMMM;

dddd;

hhhh;

HHHH;

mmmm;

ssss;

SSSS;

EEEE;

aaaa;

zzzz;

28.(pattern);

29.4位:

30.31.pattern=年代:

GGGGG;

yyyyy;

MMMMM;

ddddd;

hhhhh;

HHHHH;

mmmmm;

sssss;

SSSSS;

EEEEE;

aaaaa;

zzzzz;

32.(pattern);

33.5位:

34.35.pattern=年代:

GGGGGG;

yyyyyy;

MMMMMM;

dddddd;

hhhhhh;

HHHHHH;

mmmmmm;

ssssss;

SSSSSS;

EEEEEE;

aaaaaa;

zzzzzz;

36.(pattern);

37.6位:

38.39.importclassDateTestpublicstaticvoidmain(Stringargs)/使用系统当前日期时间值创建一个Date对象Datenow=newDate();

/创建一个日期格式表达式Stringpattern=年代:

/使用日期格式表达式创建一个SimpleDateFormat对象SimpleDateFormatdf=newSimpleDateFormat(pattern);

/调用SimpleDateFormat类的format(Datedate)方法对Date对象进行格式化,并返回格式化后的字符串。

/该方法继承自类1位:

/创建一个新的日期格式表达式pattern=年代:

时(023

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

当前位置:首页 > 高中教育 > 小学教育

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

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