Java日历类Calendar 默认是从星期天开始算作本周的第一天, 所以网上很多都是直接获取本周的第二天Calendar.MONDAY来当做本周的第一天,但是实际上有个很严重的问题就是周天的时候去获取本周的第一天实际上是获取到了下一周的周一从而导致周天的数据并没有统计到.
错误示例如下:
解决也很简单,就是如果是周天就往前减一周
获取本周第一天正确代码:
* 获取本周的第一天 00:00:00
* @return
public static Date currentWeekFirstDay() {
Calendar cal = Calendar.getInstance();
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
if (Calendar.SUNDAY == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);//星期天向前减一天即得到上一周
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
return cal.getTime();
获取本周的最后一天:
* 获取本周的周日最后一秒时间节点 23:59:59
* @return
public static Date currentWeekLastDay() {
Calendar cal = Calendar.getInstance();
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
if (Calendar.SUNDAY == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);//最后一天周六
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.add(Calendar.DAY_OF_WEEK, 1);//加一天得到周天
return cal.getTime();
BUG
获取
周一的日期,周日
获取
到的是下周的周一
强调:以周一为一星期的
第一天
!!!
问题描述:开发过程中需要使用日期相关的函数,有些功能需要自行开发,为了赶时间于是在网上找到现成的代码,起初没什么问题,到了星期天突然发现数据不对,仔细排查,发现
BUG
,周日
获取
到的周一日期不是
本周
而是下周的。
含有
BUG
的代码(来源为网络):2020-3-22 周日
本周
的周一为2020-3-16
//Syste...
Date date = new Date();//获得系统时间.
SimpleDateFormat sdf = new SimpleDateFormat(" yyyy-MM-dd HH:mm:ss");
String nowTime = sdf.format(date);
Date time = sdf.parse(nowTime);
2、
获取
昨天时间(年月日时分秒)
Date dN.
public Date setTime(Date time1) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(time1); //time1为初始时间
calendar.add(Calendar.DAY_OF_MONTH, 1)...
Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。
cal.add(Calendar.DAY_OF_MONTH, -1); //取当前日期的前
一天
.
cal.add(Calendar.DAY_OF_MONTH, +1);//取当前日期的后
一天
.
//通过格式化输出日期
java
.text.SimpleDateFormat form...
public static final String FORMAT_YYYY_MM_DD = "yyyy-MM-dd";
public static String getThisWeekOfFirstDate() {
SimpleDateFormat format = new SimpleDateFormat(FORMAT_YYYY_MM_DD);
Calendar...
setDate(N) N为(0-31)代表这个月的第N天 结果为数值型,,如果当月有 31 天:32 为下个月的
第一天
如果当月有 30 天:32 为下一个月的第二天
指定日期
第一天
var date=new date()
new Date(date.setDate(1))
指定日期
最后
一天
setDate()参数为0时代表上个月的
最后
一天
,所以在
获取
指定日期所在月
最后
一个天时,需要将日期所在月份加+1
new Date(new Da...
getLocalTime(‘nn’);
function getLocalTime(nn) {
return new Date(parseInt(nn) * 1000).toLocaleString().replace(/:\d{1,2}$/, ' ')
2. 如果
BUG
是真实存在的,需要将其
记
录在
BUG
跟踪系统中,并分配给相应的开发人员进行修复。
3. 开发人员修复
BUG
后,需要进行回归测试以确保
BUG
已经被修复。
4. 如果回归测试通过,可以将
BUG
标
记
为已解决并关闭。
5. 如果回归测试未通过,需要将
BUG
重新分配给开发人员进行修复,并重复步骤3和4,直到
BUG
被成功修复为止。