Calendar类你可能不知道的坑

导读:本篇文章讲解 Calendar类你可能不知道的坑,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

废话不多说,弄完睡觉,直接上代码

package com.xiaojie.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author xiaojie
 * @version 1.0
 * @description: Calendar代码
 * @date 2022/1/20 23:19
 */
public class CalendarDemo {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date = sdf.parse("2021-12-26 13:14:15");
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        System.out.println("获取当前年份>>>>>>>>>>>>>>" + calendar.get(Calendar.YEAR));
        //月份是从0开始的
        System.out.println("获取当前月份>>>>>>>>>>>>>>" + (calendar.get(Calendar.MONTH) + 1));
        System.out.println("获取当前日期在当前月份第几天>>>>>>>>>>>>>>" + calendar.get(Calendar.DATE));
        System.out.println("获取当前日期在当前月份第几天>>>>>>>>>>>>>>" + calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println("获取当前日期在当前年份第几天>>>>>>>>>>>>>>" + calendar.get(Calendar.DAY_OF_YEAR));
        System.out.println("获取当前日期在当前月份是第几周>>>>>>>>>>>>>>" + calendar.get(Calendar.WEEK_OF_MONTH));
        System.out.println("获取当前日期在当前年份是第几周>>>>>>>>>>>>>>" + calendar.get(Calendar.WEEK_OF_YEAR));
        //1-7分别是周日、一、二、三、四、五、六
        System.out.println("获取当前日期是星期几>>>>>>>>>>>>>>>>>>>>>>" + calendar.get(Calendar.DAY_OF_WEEK));
        System.out.println("获取当前日期的时间小时 12小时计时制>>>>>>>>>>>>>>>>>>>>>>" + calendar.get(Calendar.HOUR));
        //0表示上午,1-表示下午
        System.out.println("获取当前日期的时间为上午还是下午>>>>>>>>>>>>>>>>>>>>>>" + calendar.get(Calendar.AM_PM));
        System.out.println("获取当前日期的时间小时 24小时值>>>>>>>>>>>>>>>>>>>>>>" + calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println("获取当前日期的时间分钟>>>>>>>>>>>>>>>>>>>>>>" + calendar.get(Calendar.MINUTE));
        System.out.println("获取当前日期的时间秒数>>>>>>>>>>>>>>>>>>>>>>" + calendar.get(Calendar.SECOND));
        System.out.println("获取当前日期的时间毫秒>>>>>>>>>>>>>>>>>>>>>>" + calendar.get(Calendar.MILLISECOND));

        //第二种设置日历方式
        Calendar calendar1 = Calendar.getInstance();
        calendar1.set(Calendar.YEAR, 2022);
        calendar1.set(Calendar.MONTH, 0);
        calendar1.set(Calendar.DATE, 20);
//        calendar.set(Calendar.HOUR,13); //12小时制
        calendar1.set(Calendar.HOUR_OF_DAY, 13);//24小时制
        calendar1.set(Calendar.MINUTE, 14);
        calendar1.set(Calendar.SECOND, 15);
        System.out.println("获取时间>>>calendar1>>>>>>" + sdf.format(calendar1.getTime()));
        //第三种
        Calendar calendar2 = Calendar.getInstance();
        calendar2.set(2022, 0, 21);//时分秒默认补齐
        System.out.println("获取日期>>>calendar2>>>>>>>>>" + calendar2.getTime());
        //第四种
        Calendar calendar3 = Calendar.getInstance();
        calendar3.set(2022, 0, 21, 13, 30);//时分秒默认补齐
        System.out.println("获取日期>>>calendar3>>>>>>>>>>" + calendar3.getTime());
        //第五种
        Calendar calendar4 = Calendar.getInstance();
        calendar4.set(2022, 0, 21, 13, 14, 15);//时分秒默认补齐
        System.out.println("获取日期>>>calendar4>>>>>>>>>>>>" + calendar4.getTime());
    }

}

执行结果如下图

Calendar类你可能不知道的坑

 坑一、

你会发现12月26日竟然是当前年份的第一周,这个搞得我有点凌乱啊

Calendar类你可能不知道的坑

 我是百思不能得解啊,终于后来我想明白了,这JAVA是TMD(甜蜜的)外国人写的,你有没有发现西方有个节日,对你没想错,就是圣诞节,我! 擦 !擦 !擦 !哦 麦噶扥 !!!原来西方人过完圣诞节后就开始新的第一周了。I Wish every day is merry, not just Christmas

所以如果仅仅是为了计算日期是当前年份的第几周,那么只需要把当前日期减去6之后,就可以实现啦。

坑二、

这个大部分人应该知道,一周的第一天是周日,而不是星期一所以Calendar.DAY_OF_WEEK的1-7分别代表周日、周一、周二、周三、周四、周五、周六。

坑三、

月份并不像我们认为的月份是从1开始的,月份在Calendar中是从0开始的,所以聪明的你一定知道我想说啥了。Calendar.MONTH中 0-11依次代表1-12月份,所以写代码时候需要注意了啊0是1月份,1是2月份以此类推。。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/18476.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!