FantasticMRL

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.概述

总结一下最近在做的关于Calenda类的东西。

Calenda提供了丰富的api通过Calenda的Year,Month,Day,Hour...这些关于日期的常量字段指定具体的日期和时间。和java.util.Date()相互转换。


2.基本使用

和java.util.Date()之间的相互转换。

package demo;

import java.util.Calendar;
import java.util.Date;

public class Demo
{
    public static void main(String[] args) {
        //实例化
        Calendar c = Calendar.getInstance();
        //设置时间Date转Calendar
        c.setTime(new Date());
        //Calendar转Date
        Date d = c.getTime();
    }
}

3.常用api

如何手动指定各个字段:

  @Test
    public void testAPi(){
        
        Calendar c = Calendar.getInstance();
        //指定年
        c.set(Calendar.YEAR, 2018);
        //指定月,month是从0开始,3即是4月
        c.set(Calendar.MONTH, 3);
        //日,从0开始DAY_OF_MONTH=DATE
        c.set(Calendar.DAY_OF_MONTH, 3);
        //时,HOUR:代表12小时制(0-11)  HOUR_OF_DAY:24小时(1-24)
        c.set(Calendar.HOUR_OF_DAY, 16);
        //
        c.set(Calendar.MINUTE, 20);
        //
        c.set(Calendar.SECOND, 30);
        
        //最终结果 2018-4-3 16:20:30
        
    }
View Code

 

4.一些稍微高级点的应用

1.求指定月份的第一天

  public static Date getFirstDayOfMonth(Date date){
        //
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        //求指定月份的第一天
        //设置天c.getActualMinimum(Calendar.DAY_OF_MONTH)返回当前月份的第一天(其实可以直接返回1号....)
        c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
        //还可以设置一些时分秒,要不然时分秒是随机的
        c.set(Calendar.HOUR_OF_DAY, 0);
        //
        c.set(Calendar.MINUTE, 0);
        //
        c.set(Calendar.SECOND, 0);
        
        return c.getTime();
    }
View Code

 

2.求指定月份的最后一天

 public static Date getLastDayOfMonth(Date date){
        //
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        //求指定月份的最后一天
        //设置天c.getActualMaximum(Calendar.DAY_OF_MONTH)返回当前月份的最后一天
        c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
        //还可以设置一些时分秒,要不然时分秒是随机的
        c.set(Calendar.HOUR_OF_DAY, 23);
        //
        c.set(Calendar.MINUTE, 59);
        //
        c.set(Calendar.SECOND, 59);
        
        return c.getTime();
    }
View Code

 

3.延伸的也可以根据上面的也可以求某个季度的第一天,最后一天等。也可以求过了多少天(最大天数-当前天)

求当月还剩多少天

 public static int leftDays(Date d){
        Calendar c = Calendar.getInstance();
        c.setTime(d);
        //一共多少天
        int actualMaximum = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        return actualMaximum-day;
    }

 

posted on 2018-06-29 14:27  FantasticMRL  阅读(393)  评论(0编辑  收藏  举报