Java日期类Calendar详解

Calendar API:
Calendar calendar = Calendar.getInstance();
int year   = calendar. get(Calendar.YEAR);            //获取年;  
int month  = calendar. get(Calendar.MONTH);     //获取月;  
int date   = calendar. get(Calendar.DATE);            //获取天;  
int hour   = calendar. get(Calendar.HOUR);          //获取小时;  
int minute = calendar. get(Calendar.MINUTE);     //获取分钟;  
int second = calendar. get(Calendar.SECOND);  //获取秒钟;  
long millssecond = calendar. getTimeInMillis();  //获取毫秒
-------------------------------------------------------------------------------------------------------------------------
int hour_of_day = calendar. get(Calendar.HOUR_OF_DAY);              //第几个小时,  
int day_of_month  = calendar. get(Calendar.DAY_OF_MONTH);       //这天,在一个月内是第几天.   
int day_of_week = calendar. get(Calendar.DAY_OF_WEEK)-1;         //这天,在一周内,是第几天. 因为按中国礼拜一作为第一天所以这里减1  
int day_of_year = calendar. get(Calendar.DAY_OF_YEAR);                //这天,在一年内,是第几天。  
int week_of_year = calendar. get(Calendar.WEEK_OF_YEAR);         //这周,在一年内是第几周;  
int week_of_month = calendar. get(Calendar.WEEK_OF_MONTH); //这周,在这个月是第几周;以以星期为标准;  



在当前日期上添加天数
Calendar cal = Calendar.getInstance();  
cal. add(Calendar.DATE, 30);// 30为增加的天数,可以改变  

Date d = cal.getTime();


在当前日期上减去天数

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE)-2);
Date newDate = calendar.getTime();


系统当前时间毫秒数转换为Timestamp,再转换为Calendar:

calendar.setTime(new Timestamp(System.currentTimeMillis()));

或者,将当前时间Date类型直接转换为Calendar:

calendar.setTime(new Date());



实际应用:

1、获取本周第一天的日期

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
int order_of_curDay = calendar.get(Calendar.DAY_OF_WEEK)-1;
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE)-order_of_curDay+1);
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sf.format(calendar.getTime());


2、将Unix时间戳转换为标准格式的时间格式

Unix时间戳其实就是时间的毫秒数,因此可以利用Timestamp类来解决这个问题。

String unixTime = "1447896343843";
Long time = Long.valueOf(unixTime);
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Timestamp(time));
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(sf.format(calendar.getTime()));


3、对于业务中常遇到的需求:将当前系统时间与数据库中获取到的时间比较,获得时间差。

可按下面步骤解决:

利用上面的方法将系统当前时间毫秒数和数据库获取到的Timestamp或Date转换为Calendar;

通过Calendar类的getTimeInMillis()方法,得到各自的long类型的毫秒数;

两者相减得到时间差;

毫秒数转换为天数,需要除以1000*3600*24。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值