`

Java 根据年号和第几周得到开始时间和结束时间

 
阅读更多

通常在做与时间相关的查询时,一个通用的做法是放入两个日历控件,一个是开始时间,一个是结束时间,用户在选择时间之后,校验时间合法性之后,就可以查询了,但在做小日本项目时遇到一个很奇葩的查询,这些用户不用开始时间结束时间,而是用这一年的第几周来查询出报表,个人觉得很不习惯,但还得做。

后台保留的时间格式是datetime类型的,而前台给出的条件是 年号 和第几周,比如 2014 年 第 5 周. 这个时候,你需要在后台用 Java 将 它转换成具体的开始时间,结束时间,然后再去数据库查询。转换的具体方法,分享如下 :

package com.training.controller;import java.util.Calendar;publicclassConvertDateTest{
    
    publicstaticvoid main(String[] args){
        
        ConvertDateTest cd =newConvertDateTest();
        System.out.println("开始时间: "+ cd.getStartDayOfWeekNo(2014,5));
        System.out.println("结束时间:"+ cd.getEndDayOfWeekNo(2014,5));    
        
    }
    
    /**
     * get first date of given month and year
     * @param year
     * @param month
     * @return
     */
    publicString getFirstDayOfMonth(int year,int month){
        String monthStr = month <10?"0"+ month :String.valueOf(month);
        return year +"-"+monthStr+"-"+"01";
    }
    
    /**
     * get the last date of given month and year
     * @param year
     * @param month
     * @return
     */
    publicString getLastDayOfMonth(int year,int month){
        Calendar calendar =Calendar.getInstance();
        calendar.set(Calendar.YEAR , year);
        calendar.set(Calendar.MONTH , month -1);
        calendar.set(Calendar.DATE ,1);
        calendar.add(Calendar.MONTH,1);
        calendar.add(Calendar.DAY_OF_YEAR ,-1);
        return calendar.get(Calendar.YEAR)+"-"+(calendar.get(Calendar.MONTH)+1)+"-"+
               calendar.get(Calendar.DAY_OF_MONTH);
    }
    
    /**
     * get Calendar of given year
     * @param year
     * @return
     */
    privateCalendar getCalendarFormYear(int year){
        Calendar cal =Calendar.getInstance();
        cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);      
        cal.set(Calendar.YEAR, year);return cal;
    }
    
    /**
     * get start date of given week no of a year
     * @param year
     * @param weekNo
     * @return
     */
    publicString getStartDayOfWeekNo(int year,int weekNo){
        Calendar cal = getCalendarFormYear(year);
        cal.set(Calendar.WEEK_OF_YEAR, weekNo);
        return cal.get(Calendar.YEAR)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+
               cal.get(Calendar.DAY_OF_MONTH);    
        
    }
    
    /**
     * get the end day of given week no of a year.
     * @param year
     * @param weekNo
     * @return
     */
    publicString getEndDayOfWeekNo(int year,int weekNo){
        Calendar cal = getCalendarFormYear(year);
        cal.set(Calendar.WEEK_OF_YEAR, weekNo);
        cal.add(Calendar.DAY_OF_WEEK,6);return cal.get(Calendar.YEAR)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+
               cal.get(Calendar.DAY_OF_MONTH);    
    }}



运行得到 2014 年第 5 周的开始时间和结束时间:

开始时间:2014-1-27结束时间:2014-2-2
分享到:
评论

相关推荐

    DateUtils.java

    "获取某年的第几周的结束日期","获取当前时间所在周的开始日期","当前时间所在周的结束日期","获得上周一的日期","获得本周一的日期","下周一的日期","今天日期","本月一日的日期","获得本月最后一日的日期

    Java实现计算一个月有多少天和多少周

    在Java编程中,有时我们需要计算特定月份的天数和周数,这可能涉及到日期和时间的处理。在Java中,我们可以使用`java.util.Calendar`类来实现这一功能。`Calendar`是Java日期和时间API的核心类,提供了丰富的功能来...

    java中Calendar类制作日历

    在Java编程语言中,`Calendar`类是处理日期和时间的核心工具之一,它提供了一系列用于操作日期和时间的方法。然而,值得注意的是,`Calendar`类本身是一个抽象类,这意味着我们不能直接实例化它来创建一个对象。为了...

    JAVA日期时间的计算[参考].pdf

    如果要根据用户输入的开始日期、结束日期和周期生成一系列日期,可以使用`Calendar`的`add()`方法,根据周期类型(如每周的星期几、每月的多少号)进行调整。 总之,理解和熟练使用Java中的日期时间处理类是软件...

    java时间操作函数汇总.pdf

    - 计算一年中的第几星期是几号,除了设置年份、星期数,还需要设置星期的哪一天(如`Calendar.MONDAY`代表一周的第一天),然后通过`getTime()`获取该日期。 5. **add()和roll()的用法** - `add()`方法用于增加或...

    JAVA日期操作汇总

    // 输出该年的第一周的第一天 ``` #### 5. 使用`add()`和`roll()`方法来调整日期 `Calendar`类提供了两种方法来调整日期:“add()”和“roll()”。 - **`add()`方法** ```java SimpleDateFormat df = new ...

    java中关于时间日期操作的常用函数

    计算一周的具体日期或者确定某一天是一年中的第几周,对于处理周报、计划安排等非常有帮助。 - **计算某一天是一年中的第几星期**: ```java Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, ...

    java对日期的控制

    这里先回溯一周,然后调整到星期一,再根据`weeks`变量确定具体日期。 #### 获取上周日 ```java public String getPreviousWeekSunday() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.WEEK_OF_...

    2023年日历(标记工作日,节假日,调休,周末),计算两个日期相差的工作日天数

    压缩包里有2个文件,用于计算两个日期相差的工作日天数(排除周末和法定节假日): 1、excel表为2023年日历数据,并且备注工作日、周末,调休、节假日类型,可导入数据库。 2、SQL文件为2023年所有日期的插入SQL,并...

    java范例开发大全

    第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...

    java范例开发大全源代码

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置...

    Java范例开发大全 (源程序)

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置是否成功 7...

    Java范例开发大全(全书源程序)

    Java范例开发大全(全书源程序),目录如下: 第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境...

    java范例开发大全(pdf&源码)

    第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...

    2022年java实训报告范文(计算机实训报告总结1000字).docx

    在2022年的Java实训中,我深入理解了计算机科学的基础知识,包括数据结构、计算机网络原理、离散数学和编译原理等核心课程。这些理论知识为我构建了坚实的编程基础,使我能够更好地理解和应对企业级开发的需求。通过...

    spring定时器时间配置

    9. **“#”** —— 用于“周几”字段,表示“该月第几个周×”。例如,“6#3”表示“该月第三个周五”。 10. **“C”** —— “calendar”的缩写,用于“日”和“周几”字段,表示基于相关日历计算出的值。 #### ...

    java实现计算周期性提醒的示例

    本示例提供了一种方法来计算周期性提醒,适用于多种类型的周期,包括年、月、日、周、小时、分钟和秒。 首先,这个示例函数`nextTime`接收四个参数:开始日期(`strdate`)、重复间隔(`cyclePriod`)、重复类型(`...

    Quartz Cron表达式

    - **开始时间**:指定触发器何时开始生效。 - **结束时间**:可选,指定触发器何时停止生效。 #### 二、CronExpression详解 Cron表达式是用于配置`CronTrigger`实例的一种字符串形式。这种字符串由七个子表达式...

    万年历_万年历_

    通过给定的日期,我们可以计算出该日期是一年中的第几天,然后用这个天数除以7取余数,余数即为星期几。例如,1号是星期一,那么2号就是星期二,依此类推。在实际编程中,可以利用编程语言提供的日期函数,结合模...

    如何打印2019年每个月的第一个星期天的日期

    但Calendar类Calendar.WEEK_OF_MONTH属性,即这一周在一个月中属于第几周这一属性设计的很不合我们的习惯,他是以周六作为一周的结束,比如19年的6月1日,恰好在周六,那么第一周就只有这一天,而作为周日的2号就在第...

Global site tag (gtag.js) - Google Analytics