Java函数计算班次时间段(白班和晚班)

ChatGPT4o 使用 ChatGPT 4o 回答

问题:

帮我使用java编写一个函数, 入参是LocalDate类型的两个日期,分别是开始日期和结束日期,还有一个参数是整型的班次(白班和晚班)标识,白班是早上08:00到晚上20:00, 晚班是20:00到次日08:00

回答:

好的,我可以帮你编写一个Java函数,该函数接受两个LocalDate类型的日期(开始日期和结束日期)以及一个整型的班次标识(0表示白班,1表示晚班)。函数将根据班次标识返回对应的时间段。

以下是一个示例代码:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class ShiftTimeCalculator {

    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2023, 10, 1);
        LocalDate endDate = LocalDate.of(2023, 10, 2);
        int shiftType = 0; // 0 for day shift, 1 for night shift

        String result = calculateShiftTime(startDate, endDate, shiftType);
        System.out.println(result);
    }

    public static String calculateShiftTime(LocalDate startDate, LocalDate endDate, int shiftType) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        if (shiftType == 0) { // Day shift
            LocalDateTime startDateTime = LocalDateTime.of(startDate, LocalTime.of(8, 0));
            LocalDateTime endDateTime = LocalDateTime.of(endDate, LocalTime.of(20, 0));
            return "Day Shift: " + startDateTime.format(formatter) + " to " + endDateTime.format(formatter);
        } else if (shiftType == 1) { // Night shift
            LocalDateTime startDateTime = LocalDateTime.of(startDate, LocalTime.of(20, 0));
            LocalDateTime endDateTime = LocalDateTime.of(endDate.plusDays(1), LocalTime.of(8, 0));
            return "Night Shift: " + startDateTime.format(formatter) + " to " + endDateTime.format(formatter);
        } else {
            return "Invalid shift type. Please use 0 for day shift and 1 for night shift.";
        }
    }
}

在这个示例中:

  1. calculateShiftTime函数接受三个参数:startDateendDateshiftType
  2. 根据shiftType的值(0表示白班,1表示晚班),函数会计算并返回对应的时间段。
  3. 使用DateTimeFormatter格式化输出的日期时间字符串。

你可以根据需要调整这个函数的实现。希望这个示例对你有帮助!