java中字符串时间 格式为"yyyyMMdd" 现在有两个字符串时间 为 a=“20230426”,b=“20230427” ,计算b是a的第几周,并且设置星期一是一个星期的第一天
时间: 2024-05-11 12:17:16 浏览: 75
RuoYi-Vue 全新 Pro 版本,优化重构所有功能
可以使用Java中的SimpleDateFormat类将字符串时间转换为Date类型,然后再进行计算。具体步骤如下:
1. 创建SimpleDateFormat对象,设置日期格式为“yyyyMMdd”。
```
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
```
2. 将字符串时间a和b转换为Date类型。
```
Date dateA = sdf.parse(a);
Date dateB = sdf.parse(b);
```
3. 计算b是a的第几周。首先获取a和b的时间戳(毫秒数),然后计算它们之间的时间差,再将时间差转换为天数,最后将天数除以7即可得到b是a的第几周。
```
long timestampA = dateA.getTime();
long timestampB = dateB.getTime();
long timeDiff = timestampB - timestampA;
int dayDiff = (int) (timeDiff / (24 * 60 * 60 * 1000));
int weekNum = dayDiff / 7 + 1;
```
4. 设置星期一是一个星期的第一天。可以使用Calendar类,将日期设置为星期一,然后再获取星期几,根据星期几来计算。
```
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateB);
calendar.setFirstDayOfWeek(Calendar.MONDAY);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == Calendar.SUNDAY) {
weekNum--;
}
```
最终代码如下:
```
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String a = "20230426";
String b = "20230427";
try {
Date dateA = sdf.parse(a);
Date dateB = sdf.parse(b);
long timestampA = dateA.getTime();
long timestampB = dateB.getTime();
long timeDiff = timestampB - timestampA;
int dayDiff = (int) (timeDiff / (24 * 60 * 60 * 1000));
int weekNum = dayDiff / 7 + 1;
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateB);
calendar.setFirstDayOfWeek(Calendar.MONDAY);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == Calendar.SUNDAY) {
weekNum--;
}
System.out.println("b是a的第" + weekNum + "周");
} catch (ParseException e) {
e.printStackTrace();
}
```
阅读全文