[学习记录][java]时间获取

想要通过java获取各种各样的时间,需要三个包:Calendar、Date以及SimpleDateFormat。利用三个类相互转换,可以完成各种形式的时间计算以及显示。


采用Calendar cal= Calendar.getInstance();进行初始化,此时默认的时间为当前时刻。


通过Calendar的get方法,可以获取很多需要的时间信息,比如:


1.获取年月日时分秒等信息,为get方法:


  1. cal.get(Calendar.YEAR);//年  
  2. cal.get(Calendar.MONTH);//月,注意月从0开始   
  3. cal.get(Calendar.DATE);//日  
  4. cal.get(Calendar.HOUR_OF_DAY);//时  
  5. cal.get(Calendar.MINUTE);  //分  
  6. cal.get(Calendar.SECOND); //秒   
  7. cal.get(Calendar.AM_PM);  //获取上下午,0是上午,1是下午   
  8. cal.get(Calendar.WEEK_OF_YEAR); //获取当前时间是本年的第几周    
  9. cal.get(Calendar.WEEK_OF_MONTH); //获取当前时间是本月的第几周   
  10. cal.get(Calendar.DAY_OF_YEAR); //获取当前时间是本年的第几天  
  11. cal.get(Calendar.DAY_OF_WEEK);//获取当前日期在星期中的第几天,注意从第一天是周日  
  12. cal.getActualMaximum(Calendar.DAY_OF_MONTH);//获取当月中天数的最大值,即当月的日期数   
  13. cal.get(Calendar.DAY_OF_MONTH);//当前时间所在月份的第几天  
  14. cal.getTimeMillis();//获取当前时间的毫秒表示   

以上get方法返回的都是int变量。

2.直接设置时间信息,为set方法,例如:


  1. cal.set(Calendar.YEAR,1990);  


其他时间信息的set方式与年类似,不在赘述,同样,需要强调的是,注意月是从0开始,而周则是从1开始,1对应周日。


如果需要更改周开始于星期一,可以采用函数setFirstDayOfWeek(MONDAY) 。

  1. cal.setTime(Date date) 使用给定的 Date 设置Calendar 的时间。    
  2. setTimeInMillis(long millis) 用给定的 long 值设置Calendar 的当前时间值。    


3.对当前日期进行增减操作:


cal.add(Calendar.DATE, 1);这个方法就是在当前的日期上加1,得到明天的时间,如果要获取昨天的时间则为-1,同理,获取其他相对于今天的日期只需要更改参数即可,而增加年月信息的方法也是如此。


与add对应的是一个roll方法,它与add类似,也可以实现时间信息的加减,但是要注意,这个函数不更改更大的参数,比如,如果当前时间为3月29日,调用cal.add(Calendar.DATE, 3),会将时间设置为4月1号,即虽然参数是日信息,但是会在时间超出本月后更改月的信息,而cal.roll(Calendar.DATE, 3)则会返回3月1号。


4.Calendar与Date的相互转换


Calendar转换为Date

  1. Date date=cal.getTime();   


Date转换为Calendar  

  

  1. Date date=new Date();    
  2. cal.setTime(date);  


5.比较两天谁前谁后


这个需求可以用Date的before和after来完成,例如:


  1. Date date1= new Date();  
  2. Date date2= cal.getTime();    
  3. date1.after(date2);  


注意,这两个方法是严格按照是否相差24个小时来判断两天谁前谁后的,所以如果date1为2015年3月29日早上八点整,而date2为3月28日晚上八点整的话,返回的结果会是false。


6.时间的字符串输出与输入 


  1. Date date=new Date();    
  2. SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");    
  3. System.out.println(df.format(date));    


以上即可完成格式化输出时间,yyyy表示年,MM为月,dd为日,hh为时,mm为分,ss为秒,大小写要注意区分。


  1. SimpleDateFormat sdf =   new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );  
  2. Date date = sdf.parse( " 2015-03-29 21:03:59 " );  


以上方法可以将字符串转化为日期,注意,此方法会有ParseException,需要使用try-catch。

学会使用以上方法,关于日期的操作基本都可以实现了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值