Java使用Calendar类实例(获取日期,日期修改,格式化日期输出,时间段内月份集合)

最近做的项目经常涉及到日期的操作,整理了一些常用操作。

示例:

  1. 获取当前日期,及数字显示和转换
  2. 日期修改,格式化日期输出
  3. 时间段内月份集合

一.  获取当前日期及数字转换 :

使用json传输数据库中Date对象时,传输的一个Long型整数,是1970年1月1日至今的毫秒数。在这里简单的试着转换了一下。

    public static void Today(){
        Calendar calendar = Calendar.getInstance();
        System.out.println("今天的日期 "+calendar.getTime());

        Date date = calendar.getTime();
        System.out.println("数字型显示(1970年1月1日至今的毫秒数)"+date.getTime());

        date.setTime(1533281628719L); //Long型整数
        System.out.println("数字型转换"+date);
    }

输出:

今天的日期 Fri Aug 03 16:08:55 CST 2018
数字型显示(1970年1月1日至今的毫秒数)1533283735097
数字型转换Fri Aug 03 15:33:48 CST 2018

 二.  日期修改,格式化日期输出

 Calendar cal = Calendar.getInstance();
        result.put("staTime", cal.get(Calendar.YEAR) + "年" + (cal.get(Calendar.MONTH) + 1) + "月" + (cal.get(Calendar.DATE)) + "日");

当时看到的是这个代码,cal.get(Calendar.MONTH)+1 因为MONTH是从0开始编码的,所以读取的时候需要加一

​
    public static void TodayFormat(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Calendar calendar = Calendar.getInstance();

        calendar.set(2018,9,10);
        calendar.add(Calendar.MONTH,-1);

        Date startDate = calendar.getTime();
        String  startDateString= sdf.format(startDate);

        System.out.println("格式化日期输出 "+startDateString);
    }

​

 输出:

格式化日期输出 2018-09-10 16:08:55

设置为2018.9.10,实际为2018.10.10日。又进行了-1操作。输出日期为2018-09-10

三.  时间段内月份集合

这个是获取六个月统计数据,所以需要当前六个月月份集合

   public static ArrayList<String> getMonthBetween(String minDate, String maxDate)throws Exception{
        ArrayList<String> result = new ArrayList<String>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");

        Calendar min = Calendar.getInstance();
        Calendar max = Calendar.getInstance();

        min.setTime(sdf.parse(minDate));
        min.set(min.get(Calendar.YEAR),min.get(Calendar.MONTH),1);

        max.setTime(sdf.parse(maxDate));
        max.set(max.get(Calendar.YEAR),max.get(Calendar.MONTH),2);

        Calendar current = min;
        while(current.before(max)){
            result.add(sdf.format(current.getTime()));
            current.add(Calendar.MONTH, 1);
        }

        return result;
    }

输出:

[2017-10, 2017-11, 2017-12, 2018-01, 2018-02, 2018-03, 2018-04, 2018-05, 2018-06, 2018-07, 2018-08, 2018-09, 2018-10, 2018-11, 2018-12, 2019-01]

 附录.  测试代码

    public static void main(String[] args) {
        Today();
        TodayFormat();

        String min = "2017-10";
        String max = "2019-01";

        ArrayList<String> result = new ArrayList<String>();

        try{
            result = getMonthBetween(min,max);
        }catch (Exception e){
        }

        System.out.println(result);

    }

 

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值