Java Caledar类(日历类)如何判断本周周数

 更新时间:2024年06月05日 11:08:28   作者:远离bug,珍爱头发  
这篇文章主要介绍了Java Caledar类(日历类)如何判断本周周数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java Caledar类判断本周周数

思路

  • 首先创建SimpleDateFormat将时间格式化
  • 创建Calendar类,因为是抽象类,所以不能用new方法,而是使用getInstance。
  • 外国人认为每周的第一天是周日,中国人认为每周的第一天是周一。所以要先调用setFirstDayOfWeek方法将周一设置为每周的第一天
  • 首先获取本地时间计算当前周数:使用Calendar 类中的WEEK_OF_YEAR
  • 获取目标日期计算周数
  • 得到的周数是int类型,所以进行数值比较

解决问题

  • 打印本周账单、判断活动的期限等。
  • 获取当前周数后,可以遍历存放日期数组那些天是当前周

实现

public static void main(String[] args) throws Exception{
        //格式化时间
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        //新建日历类
        Calendar c=Calendar.getInstance();
        //设置周一为第一天
        c.setFirstDayOfWeek(Calendar.MONDAY);
        //新建格式化今天的String类日期
        String todayStr=sdf.format(new Date());
        //转为Date类型
        Date today=sdf.parse(todayStr);
        //设置日历时间
        c.setTime(today);
        //获取当前周数
        int currentWeekNum=c.get(Calendar.WEEK_OF_YEAR);
        System.out.println(currentWeekNum);
        //要查询的日期
        String str="2022-3-28";
        Date date=sdf.parse(str);
        c.setTime(date);
        //查询日期的周数
        int selWeekNum=c.get(Calendar.WEEK_OF_YEAR);
        System.out.println(selWeekNum);
        if(currentWeekNum==selWeekNum){
            System.out.println(str+"是当前周的日期");
        }else{
            System.out.println(str+"不是当前周的日期");
        }

    }

Calendar关于周的用法

创建对象

Calendar calendar = Calendar.getInstance();

获取指定年份中有多少周

Calendar calendar = Calendar.getInstance();

传入参数,年份,例如:2023      

calendar.set(Calendar.YEAR, 2023);

获得周数

int week = calendar.getWeeksInWeekYear();

如果需要指定一周的开始时间可以 用函数

calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

获取指定周,指定年份,返回月份以及日期

```java
>//创建对象                
>Calendar calendar = Calendar.getInstance();
>// 设置年份
>calendar.set(Calendar.YEAR,2023);
>// 设置,比如 获取周一的日期
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        // 一年中的第几周
        calendar.set(Calendar.WEEK_OF_YEAR,36);
        // 获得月份。需要+1.因为月份是从0开始的
        int i = calendar.get((Calendar.MONTH))+1;
        System.out.println(i);
        // 获得那一周,周一的日期
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));

后续问题: 关于 如果1月1号为非星期一,那么定义这周为上一年的最后一周。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java Springboot对接开发微信支付详细流程

    java Springboot对接开发微信支付详细流程

    最近要做一个微信小程序,需要微信支付,所以研究了下怎么在java上集成微信支付功能,下面这篇文章主要给大家介绍了关于java Springboot对接开发微信支付的相关资料,需要的朋友可以参考下
    2024-08-08
  • Java解决线程的不安全问题之volatile关键字详解

    Java解决线程的不安全问题之volatile关键字详解

    这篇文章主要介绍了Java解决线程的不安全问题之volatile关键字详解,可见性指一个线程对共享变量值的修改,能够及时地被其他线程看到,而 volatile 关键字就保证内存的可见性,需要的朋友可以参考下
    2023-08-08
  • Spring AOP如何自定义注解实现审计或日志记录(完整代码)

    Spring AOP如何自定义注解实现审计或日志记录(完整代码)

    这篇文章主要介绍了Spring AOP如何自定义注解实现审计或日志记录(完整代码),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Java拆分Word文档的两种实用方案详解

    Java拆分Word文档的两种实用方案详解

    在日常开发中,我们经常会遇到需要处理大型 Word 文档的场景,本文介绍一种基于 Java 的自动化处理方式,利用一个基于 Java 的 Word 文档处理库,通过两种不同的策略来拆分 Word 文档,感兴趣的小伙伴可以了解下
    2026-05-05
  • Java中Retry方法的简单实现

    Java中Retry方法的简单实现

    这篇文章主要介绍了Java中Retry方法的简单实现,Retry主要是利用Java的lambda表达式和线程接口实现有返回值和无返回值的重试,思考了下就写了一个简易Retry功能分享出来,需要的朋友可以参考下
    2024-01-01
  • RabbitMQ实现消费端限流的步骤

    RabbitMQ实现消费端限流的步骤

    消费者端限流的主要目的是控制消费者每次从 RabbitMQ 中获取的消息数量,从而实现消息处理的流量控制,这篇文章主要介绍了RabbitMQ如何实现消费端限流,需要的朋友可以参考下
    2024-03-03
  • 使用log4j MDC实现日志追踪

    使用log4j MDC实现日志追踪

    这篇文章主要介绍了使用log4j MDC实现日志追踪方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java中Memcached的使用实例(包括与Spring整合)

    java中Memcached的使用实例(包括与Spring整合)

    这篇文章主要介绍了java中Memcached的使用实例(包括与Spring整合),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • javafx实现五子棋游戏

    javafx实现五子棋游戏

    这篇文章主要为大家详细介绍了javafx实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • SpringBoot 利用RestTemplate http测试

    SpringBoot 利用RestTemplate http测试

    这篇文章主要介绍了SpringBoot 利用RestTemplate http测试,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08

最新评论