Java 获取指定时间范围内的每天日期内每半天开始和结束时间并以 yyyymmddhhmmss 格式输出
以下是一个 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。
原文地址: https://www.cveoy.top/t/topic/nGU4 著作权归作者所有。请勿转载和采集!