SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date startDate = format.parse(fundNormalOpenDto.getFundOpening().getFundOpeningStartDate()); String today = format.format(new Date()); Date todayDate=format.parse(today);
时间: 2024-04-20 15:22:39 浏览: 107
这段代码的作用是将字符串类型的日期转换成Date类型的对象,并进行日期的比较。首先,使用SimpleDateFormat类创建一个格式为"yyyy-MM-dd"的日期格式化对象format。然后,通过调用format对象的parse方法,将字符串类型的日期fundNormalOpenDto.getFundOpening().getFundOpeningStartDate()转换为Date对象startDate。接着,创建一个新的Date对象,表示当前日期,将其格式化为字符串类型的日期today。最后,再次使用format对象的parse方法,将字符串类型的日期today转换为Date对象todayDate。这样,就可以对startDate和todayDate进行日期的比较了。
相关问题
String startTimeStr = query.getTimeRange()[0]; String endTimeStr = query.getTimeRange()[1]; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startDate = sdf.parse(startTimeStr); Date endDate = sdf.parse(endTimeStr); Calendar startCal = Calendar.getInstance(); startCal.setTime(startDate); startCal.set(Calendar.HOUR_OF_DAY, 0); startCal.set(Calendar.MINUTE, 0); startCal.set(Calendar.SECOND, 0); Calendar endCal = Calendar.getInstance(); endCal.setTime(endDate); endCal.set(Calendar.HOUR_OF_DAY, 23); endCal.set(Calendar.MINUTE, 59); endCal.set(Calendar.SECOND, 59); while (startCal.before(endCal)) { Date dayStart = startCal.getTime(); System.out.println("Day start: " + sdf.format(dayStart)); startCal.set(Calendar.HOUR_OF_DAY, 0); startCal.set(Calendar.MINUTE, 0); startCal.set(Calendar.SECOND, 0); Date dayEnd = startCal.getTime(); if (dayEnd.after(endCal.getTime())) { endCal.setTime(startCal.getTime()); endCal.set(Calendar.HOUR_OF_DAY, 23); endCal.set(Calendar.MINUTE, 59); endCal.set(Calendar.SECOND, 59); dayEnd = endCal.getTime(); } System.out.println("Day end: " + sdf.format(dayEnd)); startCal.add(Calendar.DAY_OF_MONTH, 1); } 用hutoo工具 java 优化
可以使用 Hutool 工具类中的 DateUtil 进行日期处理,简化代码:
```
String startTimeStr = query.getTimeRange()[0];
String endTimeStr = query.getTimeRange()[1];
Date startDate = DateUtil.parse(startTimeStr);
Date endDate = DateUtil.parse(endTimeStr);
while (startDate.before(endDate)) {
Date dayStart = DateUtil.beginOfDay(startDate);
System.out.println("Day start: " + DateUtil.formatDateTime(dayStart));
Date dayEnd = DateUtil.endOfDay(startDate);
System.out.println("Day end: " + DateUtil.formatDateTime(dayEnd));
startDate = DateUtil.offsetDay(startDate, 1);
}
```
JAVA 计算指定工作日工作了多少分钟 单位(分钟) 1.传入工作时段字符串,格式为String(HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm), 2.传入工作开始日期时间(Date类型yyyy-MM-dd hh:mm:ss) 3.传入工作结束日期时间(Date类型yyyy-MM-dd hh:mm:ss) 4.传入一个指定年月日(Date类型yyyy-MM-dd),该日期已知在工作开始和结束日期之间
以下是实现计算指定工作日工作了多少分钟的 Java 代码:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class WorkTimeCalculator {
private static final int WORK_MINUTES_PER_DAY = 8 * 60; // 每天工作分钟数
/**
* 计算指定工作日工作了多少分钟
* @param workTimeStr 工作时段字符串,格式为 "HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm"
* @param startDate 工作开始日期时间
* @param endDate 工作结束日期时间
* @param specifiedDate 指定年月日
* @return 工作分钟数
* @throws ParseException
*/
public static int calculateWorkMinutes(String workTimeStr, Date startDate, Date endDate, Date specifiedDate) throws ParseException {
Calendar startCal = Calendar.getInstance();
startCal.setTime(startDate);
Calendar endCal = Calendar.getInstance();
endCal.setTime(endDate);
Calendar specCal = Calendar.getInstance();
specCal.setTime(specifiedDate);
int workMinutes = 0;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String[] workTimeArr = workTimeStr.split(";");
for (Calendar cal = startCal; cal.before(endCal); cal.add(Calendar.DATE, 1)) {
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
// 周末不计算工作时间
continue;
}
if (cal.get(Calendar.YEAR) == specCal.get(Calendar.YEAR) && cal.get(Calendar.MONTH) == specCal.get(Calendar.MONTH) && cal.get(Calendar.DATE) == specCal.get(Calendar.DATE)) {
// 指定日期当天的工作时间
for (String workTime : workTimeArr) {
String[] timeArr = workTime.split("-");
Date startWorkTime = sdf.parse(timeArr[0]);
Date endWorkTime = sdf.parse(timeArr[1]);
Calendar startWorkCal = Calendar.getInstance();
startWorkCal.setTime(startWorkTime);
Calendar endWorkCal = Calendar.getInstance();
endWorkCal.setTime(endWorkTime);
if (cal.get(Calendar.HOUR_OF_DAY) < startWorkCal.get(Calendar.HOUR_OF_DAY)) {
// 当天工作开始时间在指定工作时段之前
workMinutes += (endWorkCal.get(Calendar.HOUR_OF_DAY) - startWorkCal.get(Calendar.HOUR_OF_DAY)) * 60;
workMinutes += endWorkCal.get(Calendar.MINUTE) - startWorkCal.get(Calendar.MINUTE);
} else if (cal.get(Calendar.HOUR_OF_DAY) > endWorkCal.get(Calendar.HOUR_OF_DAY)) {
// 当天工作开始时间在指定工作时段之后
continue;
} else {
// 当天工作开始时间在指定工作时段内
if (cal.get(Calendar.MINUTE) < startWorkCal.get(Calendar.MINUTE)) {
// 当天工作开始时间在指定工作时段之前
workMinutes += endWorkCal.get(Calendar.MINUTE) - startWorkCal.get(Calendar.MINUTE);
} else if (cal.get(Calendar.MINUTE) > endWorkCal.get(Calendar.MINUTE)) {
// 当天工作开始时间在指定工作时段之后
continue;
} else {
// 当天工作开始时间刚好在指定工作时段开始时间
workMinutes += WORK_MINUTES_PER_DAY;
}
}
}
} else {
// 非指定日期当天的工作时间
workMinutes += WORK_MINUTES_PER_DAY;
}
}
return workMinutes;
}
}
```
以上代码中,我们首先定义了每天工作的分钟数为 8 * 60,即 480 分钟。然后将工作开始日期时间、工作结束日期时间和指定日期分别转换为 Calendar 对象,逐天遍历工作开始日期时间和工作结束日期时间之间的日期。对于每个非周末的日期,如果该日期是指定日期,则计算该日期的工作时间;否则,计算该日期的全天工作时间。
对于指定日期的工作时间计算,我们首先将工作时段字符串按分号拆分为多个时段,然后对于每个时段,将其开始时间和结束时间分别转换为 Calendar 对象。如果当天工作开始时间在指定工作时段之前,则计算该时段的全部工作时间;如果当天工作开始时间在指定工作时段之后,则跳过该时段不计算工作时间;如果当天工作开始时间在指定工作时段内,则计算该时段从开始时间到结束时间之间的工作时间。最后将所有的工作时间累加起来即可得到总的工作分钟数。
阅读全文