通常在做与时间相关的查询时,一个通用的做法是放入两个日历控件,一个是开始时间,一个是结束时间,用户在选择时间之后,校验时间合法性之后,就可以查询了,但在做小日本项目时遇到一个很奇葩的查询,这些用户不用开始时间结束时间,而是用这一年的第几周来查询出报表,个人觉得很不习惯,但还得做。
后台保留的时间格式是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
相关推荐
"获取某年的第几周的结束日期","获取当前时间所在周的开始日期","当前时间所在周的结束日期","获得上周一的日期","获得本周一的日期","下周一的日期","今天日期","本月一日的日期","获得本月最后一日的日期
在Java编程中,有时我们需要计算特定月份的天数和周数,这可能涉及到日期和时间的处理。在Java中,我们可以使用`java.util.Calendar`类来实现这一功能。`Calendar`是Java日期和时间API的核心类,提供了丰富的功能来...
在Java编程语言中,`Calendar`类是处理日期和时间的核心工具之一,它提供了一系列用于操作日期和时间的方法。然而,值得注意的是,`Calendar`类本身是一个抽象类,这意味着我们不能直接实例化它来创建一个对象。为了...
如果要根据用户输入的开始日期、结束日期和周期生成一系列日期,可以使用`Calendar`的`add()`方法,根据周期类型(如每周的星期几、每月的多少号)进行调整。 总之,理解和熟练使用Java中的日期时间处理类是软件...
- 计算一年中的第几星期是几号,除了设置年份、星期数,还需要设置星期的哪一天(如`Calendar.MONDAY`代表一周的第一天),然后通过`getTime()`获取该日期。 5. **add()和roll()的用法** - `add()`方法用于增加或...
// 输出该年的第一周的第一天 ``` #### 5. 使用`add()`和`roll()`方法来调整日期 `Calendar`类提供了两种方法来调整日期:“add()”和“roll()”。 - **`add()`方法** ```java SimpleDateFormat df = new ...
计算一周的具体日期或者确定某一天是一年中的第几周,对于处理周报、计划安排等非常有帮助。 - **计算某一天是一年中的第几星期**: ```java Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, ...
这里先回溯一周,然后调整到星期一,再根据`weeks`变量确定具体日期。 #### 获取上周日 ```java public String getPreviousWeekSunday() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.WEEK_OF_...
压缩包里有2个文件,用于计算两个日期相差的工作日天数(排除周末和法定节假日): 1、excel表为2023年日历数据,并且备注工作日、周末,调休、节假日类型,可导入数据库。 2、SQL文件为2023年所有日期的插入SQL,并...
第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...
第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配置...
第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范例开发大全(全书源程序),目录如下: 第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 配置环境...
第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实训中,我深入理解了计算机科学的基础知识,包括数据结构、计算机网络原理、离散数学和编译原理等核心课程。这些理论知识为我构建了坚实的编程基础,使我能够更好地理解和应对企业级开发的需求。通过...
9. **“#”** —— 用于“周几”字段,表示“该月第几个周×”。例如,“6#3”表示“该月第三个周五”。 10. **“C”** —— “calendar”的缩写,用于“日”和“周几”字段,表示基于相关日历计算出的值。 #### ...
本示例提供了一种方法来计算周期性提醒,适用于多种类型的周期,包括年、月、日、周、小时、分钟和秒。 首先,这个示例函数`nextTime`接收四个参数:开始日期(`strdate`)、重复间隔(`cyclePriod`)、重复类型(`...
- **开始时间**:指定触发器何时开始生效。 - **结束时间**:可选,指定触发器何时停止生效。 #### 二、CronExpression详解 Cron表达式是用于配置`CronTrigger`实例的一种字符串形式。这种字符串由七个子表达式...
通过给定的日期,我们可以计算出该日期是一年中的第几天,然后用这个天数除以7取余数,余数即为星期几。例如,1号是星期一,那么2号就是星期二,依此类推。在实际编程中,可以利用编程语言提供的日期函数,结合模...
但Calendar类Calendar.WEEK_OF_MONTH属性,即这一周在一个月中属于第几周这一属性设计的很不合我们的习惯,他是以周六作为一周的结束,比如19年的6月1日,恰好在周六,那么第一周就只有这一天,而作为周日的2号就在第...