1、请看下面的例子:Java代码 1.import 2.import 3.import 4.import 5.6.public class DateTest 7./*8.*以一种较为友好的方式格式化日期时间值 9.*10.*param c 11.*日期时间对象 12.*return 格式化后的日期时间字符串 13.*/14.public static String toFriendlyString(Calendar c)15.if(c!=null)16.DateFormat df=new SimpleDateFormat(yyyy年 MM 月 dd日 HH:mm:ss);17.return();1
2、8.19.return null;20.21.22.public static void main(String args)23.Calendar c1=();24.创建方式:();25.日期时间:+(c1);26.27.28.Calendar c2=new GregorianCalendar();29.创建方式:new GregorianCalendar();30.日期时间:+(c2);31.32.33./参数含义依次为:年、月、日 34.Calendar c3=new GregorianCalendar(2008,8,8);35.创建方式:new GregorianCalendar(200
3、8,8,8);36.日期时间:+(c3);37.38.39./参数含义依次为:年、月、日、时、分 40.Calendar c4=new GregorianCalendar(2008,8,8,6,10);41.创建方式:new GregorianCalendar(2008,8,8,6,10);42.日期时间:+(c4);43.44.45./参数含义依次为:年、月、日、时、分、秒 46.Calendar c5=new GregorianCalendar(2008,8,8,18,10,5);47.创建方式:new GregorianCalendar(2008,8,8,18,10,5);48.日期时间
4、:+(c5);49.50.import class DateTest /*以一种较为友好的方式格式化日期时间值 *param c *日期时间对象 *return 格式化后的日期时间字符串 */public static String toFriendlyString(Calendar c)if(c!=null)DateFormat df=new SimpleDateFormat(yyyy 年 MM 月 dd 日 HH:return();return null;public static void main(String args)Calendar c1=();创建方式:日期时间:Calenda
5、r c2=new GregorianCalendar();/参数含义依次为:年、月、日 Calendar c3=new GregorianCalendar(2008,8,8);年、月、日、时、分 Calendar c4=new GregorianCalendar(2008,8,8,6,10);年、月、日、时、分、秒 Calendar c5=new GregorianCalendar(2008,8,8,18,10,5);运行结果如下:1.创建方式:()2.日期时间:2008 年 07 月 22日 11:54:48 3.4.创建方式:new GregorianCalendar()5.日期时间:48
6、 6.7.创建方式:new GregorianCalendar(2008,8,8.日期时间:2008 年 09 月 08日 00:00 9.10.创建方式:new GregorianCalendar(2008,8,8,6,10)11.日期时间:2008 年 09 月 08日 06:10:00 12.13.创建方式:new GregorianCalendar(2008,8,8,18,10,5)14.日期时间:2008 年 09 月 08日 18:05 为了便于阅读,我们增加一个 toFriendlyString(Calendar c)方法,它将日期时间值格式化为一种更加友好易懂的形式,我们将在接
7、下来的内容中讲解它的实现原理。分析运行结果后,我们发现有两个地方需要注意:1.在创建 GregorianCalendar 对象时,月份值都设定为 8,但打印结果都是 9月份。这并不是我们的代码有问题,而是因为 JAVA表示的月份是从 0 开始的,也就是说它用来表示月份的数值总是比实际月份值小 1。因此我们要表示 8 月份,就是应该设置 8-1=7 这个值。2.GregorianCalendar 的小时数是 24小时制的。为了避免出现因为忘记处理 1的差值而设置了错误的月份,也让代码看起来更加直观,推荐大家使用定义在 Calendar类的的这些常量来代替直接用数字表示月份:一月:=0 二月:=1
8、 三月:=2 四月:=3 五月:=4 六月:=5 七月:=6 八月:=7 九月:=8 十月:=9 十一月:=10 十二月:=11 如果我们想要从 Calendar 对象获得各种属性的值,就需要调用它的 get(int field)方法,这个方法接收一个 int 型的参数,并且根据这个给定参数的值来返回相应的属性的值。该方法的定义如下:Java代码 1.public int get(int field)2./other code 3.public int get(int field)/other code 我们以一个示例来说明 get(int field)方法所能接受的一些常用参数的含义及用法:
9、Java代码 1.import 2.import 3.import 4.5.public class DateTest 6./*7.*以一种较为友好的方式格式化日期时间值 8.*9.*param c 10.*日期时间对象 11.*return 格式化后的日期时间字符串 12.*/13.public static String toFriendlyString(Calendar c)14.if(c!=null)15.DateFormat df=new SimpleDateFormat(yyyy年 MM 月 dd日 HH:);16.return();17.18.return null;19.20.
10、21.public static void main(String args)22.Calendar c=();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);4
11、8.星期五:=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.
12、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.import class DateTest /*以一种较为友好的方式格式化日期时间值 *param c *日期时间对象 *return 格式化后的日期时间字符串
13、 */public static String toFriendlyString(Calendar c)if(c!public static void main(String args)Calendar c=();当前时刻:属性名称:代表含义:测试结果:星期日:星期一:星期二:星期三:星期四:星期五:星期六:12小时制下的小时数,中午和午夜表示为 0);24小时制下的小时数,午夜表示为 0);月份,从 0到 11 表示 12个月份,比实际月份值小 1);1.当前时刻:2008 年 07 月 22日 13:16:2.3.属性名称:4.代表含义:上下午标识,上午返回=0,下午返回=1 5.测试结果
14、:1 6.7.属性名称:8.代表含义:一个月中的第几天,同 9.测试结果:22 10.11.属性名称:12.代表含义:一个月中的第几天,同 13.测试结果:22 14.15.属性名称:16.代表含义:17.星期日:=1 18.星期一:=2 19.星期二:=3 20.星期三:=4 21.星期四:=5 22.星期五:=6 23.星期六:=7 24.测试结果:3 25.26.属性名称:这一天所对应的星期几在该月中是第几次出现 28.测试结果:4 29.30.属性名称:31.代表含义:一年中的第几天 32.测试结果:204 33.34.属性名称:35.代表含义:12小时制下的小时数,中午和午夜表示为
15、0 36.测试结果:1 37.38.属性名称:39.代表含义:24小时制下的小时数,午夜表示为 0 40.测试结果:13 41.42.属性名称:43.代表含义:毫秒数 44.测试结果:421 45.46.属性名称:47.代表含义:分钟 48.测试结果:16 49.50.属性名称:51.代表含义:月份,从 0到 11表示 12 个月份,比实际月份值小 1 52.测试结果:6 53.54.属性名称:55.代表含义:秒 56.测试结果:7 57.58.属性名称:一个月中的第几个星期 60.测试结果:4 61.62.属性名称:63.代表含义:一年中的第几个星期 64.测试结果:30 65.66.属性名
16、称: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。
17、Calendar对象和 Date对象可以通过 Calendar 类的如下两个方法进行相互转换:Java代码 1.public final Date getTime()2./other code 3.4.5.public final void setTime(Date date)6./other code 7.public final Date getTime()/other code public final void setTime(Date date)/other code 日期格式化与解析 我们回头再来看看在上面的例子中定义的 toFriendlyString(Calendar c)方法
18、,它将一个 Calendar对象的日期时间值以一种很友好的方式来展现,使人们很容易看懂,也符合我们中国人的习惯。这完全得益于抽象类 DateFormat 以及它的子类实体类SimpleDateFormat 的帮助。这两个类都位于包中,是专门用于日期格式化和解析的类。而这两项工作的核心就是我们为此设定的 Pattern,我们可以称之为“日期格式表达式”。理论上讲日期格式表达式包含全部 26个英文字母的大小写,不过它们中的一些字母只是被预留了,并没有确切的含义。目前有效的字母及它们所代表的含义如下:G:年代标识,表示是公元前还是公元后 y:年份 M:月份 d:日 h:小时,从 1到 12,分上下午
19、 H:小时,从 0到 23 m:分钟 s:秒 S:毫秒 E:一周中的第几天,对应星期几,第一天为星期日,于此类推 z:时区 D:一年中的第几天 F:这一天所对应的星期几在该月中是第几次出现 w:一年中的第几个星期 W:一个月中的第几个星期 a:上午/下午标识 k:小时,从 1到 24 K:小时,从 0到 11,区分上下午 在日期格式表达式中出现的所有字母,在进行日期格式化操作后,都将被其所代表的含义对应的属性值所替换,并且对某些字母来说,重复次数的不同,格式化后的结果也会有所不同。Java代码 1.import 2.import 3.4.public class DateTest 5.publ
20、ic static void main(String args)6./使用系统当前日期时间值创建一个 Date对象 7.Date now=new Date();8.9./创建一个日期格式表达式 10.String pattern=年代:G;年份:y;月份:M;日:d;时(112):h;时(023):H;分:m;秒:s;毫秒:S;星期:E;上/下午:a;时区:z;11./使用日期格式表达式创建一个 SimpleDateFormat 对象 12.SimpleDateFormat df=new SimpleDateFormat(pattern);13./调用 SimpleDateFormat 类的
21、format(Date date)方法对 Date 对象进行格式化,并返回格式化后的字符串。14./该方法继承自类 15.1位:+(now);16.17./创建一个新的日期格式表达式 18.pattern=年代:GG;yy;MM;dd;hh;HH;mm;ss;SS;EE;aa;zz;19./调用 SimpleDateFormat 的 applyPattern(String pattern)方法用新创建的日期格式表达式替换其原有的 20.(pattern);21.2位:22.23.pattern=年代:GGG;yyy;MMM;ddd;hhh;HHH;mmm;sss;SSS;EEE;aaa;zzz
22、;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;SSS
23、SSS;EEEEEE;aaaaaa;zzzzzz;36.(pattern);37.6位:38.39.import class DateTest public static void main(String args)/使用系统当前日期时间值创建一个 Date 对象 Date now=new Date();/创建一个日期格式表达式 String pattern=年代:/使用日期格式表达式创建一个 SimpleDateFormat 对象 SimpleDateFormat df=new SimpleDateFormat(pattern);/调用 SimpleDateFormat 类的 format(Date date)方法对 Date对象进行格式化,并返回格式化后的字符串。/该方法继承自类 1位:/创建一个新的日期格式表达式 pattern=年代:时(023
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1