String timeStart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"));为什么我得到的时间是十二小时制
时间: 2024-03-09 09:50:30 浏览: 54
这是因为您在日期格式化模式中使用了小写的“hh”,这表示使用12小时制而不是24小时制。您可以将“hh”替换为“HH”,就可以得到24小时制的时间,如下所示:
```
String timeStart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
```
或者,您可以使用大写的“K”来表示12小时制的小时数,如下所示:
```
String timeStart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd KK:mm:ss"));
```
注意:在使用“K”表示12小时制小时数时,还需要同时使用“a”表示上午/下午。
相关问题
java获取 上个月开始和结束时间 格式 yyyy-MM-dd hh:mm:ss
在Java中,获取上个月的开始和结束日期,并格式化为"yyyy-MM-dd HH:mm:ss"可以按照以下步骤操作:
1. 首先,我们需要导入`java.time`包,它包含处理日期和时间的相关类。
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
```
2. 使用`LocalDate`类获取当前日期,并减去一个月:
```java
LocalDate currentDate = LocalDate.now();
LocalDate lastMonthStart = currentDate.minusMonths(1);
```
3. 创建一个`DateTimeFormatter`实例,指定所需的日期和时间格式:
```java
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
```
4. 将日期转换为字符串:
```java
String startDateStr = lastMonthStart.format(formatter);
String endDateStr = currentDate.format(formatter); // 注意这里得到的是本月的结束日期
```
完整的代码示例:
```java
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDate currentDate = LocalDate.now();
LocalDate lastMonthStart = currentDate.minusMonths(1);
String startDateStr = lastMonthStart.format(formatter);
String endDateStr = currentDate.format(formatter);
System.out.println("Last month start: " + startDateStr);
System.out.println("Current month end: " + endDateStr);
}
}
```
java 传入时间段列表(格式为hh:mm-hh:mm) 计算给定分钟后的日期时间 只考虑工作时段
可以通过以下步骤实现:
1. 将时间段列表转换为开始时间和结束时间的列表,即将 "hh:mm-hh:mm" 格式的字符串转换为两个 LocalTime 对象。
2. 计算给定分钟数对应的时间量,例如 90 分钟等于 1 小时 30 分钟。
3. 获取当前日期和时间的 LocalDateTime 对象。
4. 判断当前时间是否处于工作时段内,如果不是,则将当前时间设置为当天的工作开始时间。
5. 循环遍历工作时段列表,找到下一个可用的时间段,即开始时间在当前时间之后且结束时间在当前时间加上给定分钟数之后。
6. 如果找到可用的时间段,则将当前时间设置为该时间段的开始时间加上给定分钟数的时间,然后退出循环。
7. 如果没有找到可用的时间段,则将当前时间设置为当天的工作开始时间加上给定分钟数的时间,并将日期加一天。
8. 返回计算后的日期时间。
下面是 Java 代码示例:
```java
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class DateTimeUtils {
private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("HH:mm");
/**
* 计算给定分钟数后的日期时间
*
* @param minutes 给定分钟数
* @param workTimeList 工作时间段列表,格式为 "hh:mm-hh:mm"
* @return 计算后的日期时间
*/
public static LocalDateTime calculateDateTimeAfterMinutes(int minutes, List<String> workTimeList) {
// 将时间段列表转换为开始时间和结束时间的列表
List<LocalTime> startTimeList = workTimeList.stream().map(s -> s.split("-")[0]).map(LocalTime::parse).collect(Collectors.toList());
List<LocalTime> endTimeList = workTimeList.stream().map(s -> s.split("-")[1]).map(LocalTime::parse).collect(Collectors.toList());
// 计算给定分钟数对应的时间量
Duration duration = Duration.ofMinutes(minutes);
// 获取当前日期和时间的 LocalDateTime 对象
LocalDateTime now = LocalDateTime.now();
// 判断当前时间是否处于工作时段内,如果不是,则将当前时间设置为当天的工作开始时间
boolean isInWorkTime = false;
for (int i = 0; i < startTimeList.size(); i++) {
if (now.toLocalTime().isBefore(startTimeList.get(i))) {
now = LocalDateTime.of(now.toLocalDate(), startTimeList.get(i));
isInWorkTime = true;
break;
} else if (now.toLocalTime().isAfter(startTimeList.get(i)) && now.toLocalTime().isBefore(endTimeList.get(i))) {
isInWorkTime = true;
break;
}
}
if (!isInWorkTime) {
now = LocalDateTime.of(now.toLocalDate(), startTimeList.get(0));
}
// 循环遍历工作时段列表,找到下一个可用的时间段
boolean found = false;
for (int i = 0; i < startTimeList.size(); i++) {
if (startTimeList.get(i).isAfter(now.toLocalTime())) {
LocalDateTime start = LocalDateTime.of(now.toLocalDate(), startTimeList.get(i));
LocalDateTime end = LocalDateTime.of(now.toLocalDate(), endTimeList.get(i));
if (start.plus(duration).isBefore(end)) {
now = start.plus(duration);
found = true;
break;
}
}
}
// 如果没有找到可用的时间段,则将当前时间设置为当天的工作开始时间加上给定分钟数的时间,并将日期加一天
if (!found) {
now = LocalDateTime.of(now.toLocalDate().plusDays(1), startTimeList.get(0)).plus(duration);
}
return now;
}
public static void main(String[] args) {
// 测试代码
List<String> workTimeList = Stream.of("09:00-12:00", "13:00-18:00").collect(Collectors.toList());
LocalDateTime dateTime = calculateDateTimeAfterMinutes(90, workTimeList);
String formattedDateTime = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(formattedDateTime); // 输出示例:2021-10-01 10:30:00
}
}
```
阅读全文