2015年12月27日 阴 星期日
今天在学习计时器Timer这个类的时候,在用time.schedule(TimerTask task , Date firsttime, long period)这个方法的时候第二个参数firsttime用到了Date类型的日期,让我对Calendar的时间设置做了研究。定义个闹钟每天早上六点叫我起床,为了测试方便,我设置每隔5秒叫我一次。
start 参数是Date类型的日期。Date类型是Java不建议使用的日期类型,可是由于Date涉及的API过于广泛。所以,在大量的API中依然在使用Date类型的参数。
Date date=new Date();声明一个Date对象,可以获取当前Date类型的当前日期。
可以给大家看一下我的运行结果,因为我设置的是每隔5秒,输出一次起床了。在用QQ截图的时候,发现了当我打开截图准备多截几条起床了,发现console竟然不输出了,看来在多线程处理的时候,java默认开启了线程锁。在我截完图之后,一下子蹦出来几条起床了。看来单核u遇到多线程只能等待了。我也不知说的对不对,望大神来纠正。
之后我又用java推荐的Calendar来设置一下时间,个人感觉Calendar还是封装的比较好的时间类。首先声明一个Calendar变量是必要的,并且获取当前时间。
Calendar cal=Calendar.getInstance();
cal.set()设置12小时可以用Calendar.HOUR. 因为我看到cal还用.settime()方法,我想看看.settime()跟.set有什么区别,于是又写了下边的代码来测试。
我看了.settime(Date date)方法参数是Date类型 .set(int field ,int value)感觉cal类里应该是放了一个Map。相比之下用起来.set方法跟容易操作。不像Date类型让人看不懂。
其实计时器Timer要的就是一个Date类型的start参数,所以如果你对时间的计算很拿手的话用.settime()也未尝不可。
java还提供了SimpleDateFormat 时间格式化这个类来让Date类型的时间转化成大众意义的时间。
大写的MM代表月份,小写的mm代表分钟。
第一次写发现在写的过程中还能获得新的体验,望各路大神指点本文。