正文
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()); } }
执行结果如下图
坑一、
你会发现12月26日竟然是当前年份的第一周,这个搞得我有点凌乱啊
我是百思不能得解啊,终于后来我想明白了,这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月份以此类推。。。。