hh:mm和HH:mm的区别
时间: 2023-09-25 07:14:13 浏览: 252
在时间格式化中,"hh:mm" 和 "HH:mm" 代表不同的含义:
- "hh:mm" 表示使用 12 小时制的小时和分钟。小时值范围从 1 到 12,分钟值范围从 0 到 59。此格式中的时间是以 AM(上午)和 PM(下午)来区分的。例如,"09:30 PM" 表示晚上 9 点 30 分。
- "HH:mm" 表示使用 24 小时制的小时和分钟。小时值范围从 0 到 23,分钟值范围从 0 到 59。此格式中的时间没有 AM 和 PM 的区分。例如,"21:30" 表示晚上 9 点 30 分。
要根据你的需求选择适合的时间格式。如果你希望使用 AM 和 PM 来表示时间,并且小时范围为 1 到 12,请使用 "hh:mm" 格式。如果你希望使用 24 小时制的时间,并且小时范围为 0 到 23,请使用 "HH:mm" 格式。
同时,请注意使用合适的字母大小写。大写的 "HH" 和小写的 "hh" 在时间格式化中有不同的含义。
相关问题
时间格式化hh:mm:ss和HH:mm:ss区别
时间格式化中的 "hh:mm:ss" 和 "HH:mm:ss" 的区别在于对小时的表示方式。
- "hh:mm:ss" 使用12小时制,小时范围为 01-12。下午的时间会以 "PM" 表示。
- "HH:mm:ss" 使用24小时制,小时范围为 00-23。下午的时间会以 "24:00" 表示。
例如,假设当前时间是下午2点30分15秒:
- 使用 "hh:mm:ss" 格式化:02:30:15 PM
- 使用 "HH:mm:ss" 格式化:14:30:15
总结:
- "hh:mm:ss" 是12小时制,范围为01-12,下午以 "PM" 表示。
- "HH:mm:ss" 是24小时制,范围为00-23,下午以 "24:00" 表示。
JAVA 需求如下 1.传入设备的日常工作时间段为字符串(HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm) 2.传入未工作的空闲时间段(包含在工作时间段中)如字符串(HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm) 3.传入某工序需要的工作时间(分) 3.判断这个设备这天的连续工作时段是否满足工序时间(注意:如果空闲时段包含了非工作时间,则算做连续的工作时段) (注意:如果空闲时段包含了非工作时间,则算做连续的工作时段) (注意:如果空闲时段包含了非工作时间,则算做连续的工作时段) 4.返回true和false 和满足的空闲时间段的开始时间HH:mm
好的,您的需求很清晰明了,我来帮您解决这个问题。
以下是 JAVA 代码实现:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class DeviceWorkTimeChecker {
/**
* 判断设备在某一天的工作时间段是否满足某工序所需工作时间,并返回满足条件的空闲时间段
*
* @param workTimeStr 设备的日常工作时间段字符串,格式为HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm
* @param freeTimeStr 设备的未工作的空闲时间段字符串,格式为HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm
* @param workTimeInMin 某工序需要的工作时间(单位为分钟)
* @return 如果设备在某一天的工作时间段满足某工序所需工作时间,则返回true和满足条件的空闲时间段的开始时间HH:mm,否则返回false
*/
public static List<String> checkDeviceWorkTime(String workTimeStr, String freeTimeStr, int workTimeInMin) {
List<String> freeTimeList = splitTimeStr(freeTimeStr);
List<String> workTimeList = splitTimeStr(workTimeStr);
List<String> workTimeIntervals = getWorkTimeIntervals(workTimeList, freeTimeList);
for (String interval : workTimeIntervals) {
if (isIntervalLongEnough(interval, workTimeInMin)) {
List<String> result = new ArrayList<>();
result.add("true");
result.add(interval.split("-")[0]);
return result;
}
}
List<String> result = new ArrayList<>();
result.add("false");
return result;
}
/**
* 将时间段字符串分割成时间段列表
*
* @param timeStr 时间段字符串,格式为HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm
* @return 时间段列表,例如["HH:mm-HH:mm", "HH:mm-HH:mm", "HH:mm-HH:mm"]
*/
private static List<String> splitTimeStr(String timeStr) {
String[] timeArray = timeStr.split(";");
List<String> timeList = new ArrayList<>();
for (String time : timeArray) {
timeList.add(time);
}
return timeList;
}
/**
* 获取工作时间段列表(不包含空闲时间段)
*
* @param workTimeList 设备的日常工作时间段列表
* @param freeTimeList 设备的未工作的空闲时间段列表
* @return 工作时间段列表(不包含空闲时间段)
*/
private static List<String> getWorkTimeIntervals(List<String> workTimeList, List<String> freeTimeList) {
List<String> workTimeIntervals = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
try {
for (String workTime : workTimeList) {
Date workStartTime = sdf.parse(workTime.split("-")[0]);
Date workEndTime = sdf.parse(workTime.split("-")[1]);
boolean isWorkTime = true;
for (String freeTime : freeTimeList) {
Date freeStartTime = sdf.parse(freeTime.split("-")[0]);
Date freeEndTime = sdf.parse(freeTime.split("-")[1]);
if (workStartTime.compareTo(freeStartTime) >= 0 && workEndTime.compareTo(freeEndTime) <= 0) {
isWorkTime = false;
break;
}
}
if (isWorkTime) {
workTimeIntervals.add(workTime);
}
}
} catch (ParseException e) {
e.printStackTrace();
}
return workTimeIntervals;
}
/**
* 判断时间段是否超过指定长度
*
* @param timeInterval 时间段字符串,格式为HH:mm-HH:mm
* @param durationInMin 指定长度(单位为分钟)
* @return 如果时间段超过指定长度,则返回true,否则返回false
*/
private static boolean isIntervalLongEnough(String timeInterval, int durationInMin) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
try {
Date startTime = sdf.parse(timeInterval.split("-")[0]);
Date endTime = sdf.parse(timeInterval.split("-")[1]);
long durationInMs = durationInMin * 60 * 1000L;
if (endTime.getTime() - startTime.getTime() >= durationInMs) {
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
}
```
您可以通过以下代码来测试:
```java
public static void main(String[] args) {
String workTimeStr = "09:00-12:00;13:00-18:00";
String freeTimeStr = "10:00-11:00;15:00-16:00";
int workTimeInMin = 120;
List<String> result = DeviceWorkTimeChecker.checkDeviceWorkTime(workTimeStr, freeTimeStr, workTimeInMin);
System.out.println("是否满足工序时间:" + result.get(0));
System.out.println("空闲时间段的开始时间:" + result.get(1));
}
```
输出结果将会是:
```
是否满足工序时间:true
空闲时间段的开始时间:09:00
```
希望我的回答能够帮助您!
相关推荐
![sql](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)