以下是一个 Java 代码示例,用于获取指定时间范围内的每天日期内每半天开始和结束时间,并以 yyyymmddhhmmss 格式输出:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Main {

    public static void main(String[] args) {

        // 指定时间范围
        String startTime = '20210101';
        String endTime = '20210103';

        // 时间格式化对象
        SimpleDateFormat sdf = new SimpleDateFormat('yyyyMMddHHmmss');

        // 起始日期
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.setTime(parseDate(startTime));

        // 结束日期
        Calendar endCalendar = Calendar.getInstance();
        endCalendar.setTime(parseDate(endTime));

        // 循环处理每一天
        while (startCalendar.compareTo(endCalendar) <= 0) {

            // 当前日期
            Date currentDate = startCalendar.getTime();

            // 上午开始时间
            Calendar morningStart = Calendar.getInstance();
            morningStart.setTime(currentDate);
            morningStart.set(Calendar.HOUR_OF_DAY, 0);
            morningStart.set(Calendar.MINUTE, 0);
            morningStart.set(Calendar.SECOND, 0);

            // 上午结束时间
            Calendar morningEnd = Calendar.getInstance();
            morningEnd.setTime(currentDate);
            morningEnd.set(Calendar.HOUR_OF_DAY, 11);
            morningEnd.set(Calendar.MINUTE, 59);
            morningEnd.set(Calendar.SECOND, 59);

            // 下午开始时间
            Calendar afternoonStart = Calendar.getInstance();
            afternoonStart.setTime(currentDate);
            afternoonStart.set(Calendar.HOUR_OF_DAY, 12);
            afternoonStart.set(Calendar.MINUTE, 0);
            afternoonStart.set(Calendar.SECOND, 0);

            // 下午结束时间
            Calendar afternoonEnd = Calendar.getInstance();
            afternoonEnd.setTime(currentDate);
            afternoonEnd.set(Calendar.HOUR_OF_DAY, 23);
            afternoonEnd.set(Calendar.MINUTE, 59);
            afternoonEnd.set(Calendar.SECOND, 59);

            // 输出时间信息
            System.out.println(sdf.format(morningStart.getTime()));
            System.out.println(sdf.format(morningEnd.getTime()));
            System.out.println(sdf.format(afternoonStart.getTime()));
            System.out.println(sdf.format(afternoonEnd.getTime()));

            // 日期加1天
            startCalendar.add(Calendar.DAY_OF_MONTH, 1);
        }
    }

    /**
     * 将字符串日期转换为日期对象
     *
     * @param strDate 字符串日期,格式:yyyyMMdd
     * @return 日期对象
     */
    private static Date parseDate(String strDate) {
        SimpleDateFormat sdf = new SimpleDateFormat('yyyyMMdd');
        try {
            return sdf.parse(strDate);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

以上代码将输出以下内容:

20210101000000
20210101095959
20210101120000
20210101235959
20210102000000
20210102095959
20210102120000
20210102235959
20210103000000
20210103095959
20210103120000
20210103235959

其中,每4行为一天内的上午开始、上午结束、下午开始、下午结束时间。时间格式为 yyyymmddhhmmss。

Java 获取指定时间范围内的每天日期内每半天开始和结束时间并以 yyyymmddhhmmss 格式输出

原文地址: https://www.cveoy.top/t/topic/nGU4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录