string类型的时间格式yyyy-MM-dd 转为 yyyy-MM-dd HH:mm:ss格式
时间: 2025-07-05 17:59:04 浏览: 13
### 字符串类型时间格式转换为 `yyyy-MM-dd HH:mm:ss`
在 Java 中,将字符串类型的时间格式从 `yyyy-MM-dd` 转换为包含时间的 `yyyy-MM-dd HH:mm:ss` 格式,可以通过 `SimpleDateFormat` 类实现。该类提供了将字符串解析为 `Date` 对象以及将 `Date` 对象格式化为指定字符串的功能。
以下是一个完整的示例代码:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatExample {
public static void main(String[] args) {
// 输入的字符串时间
String strDate = "2023-01-05";
// 定义输入格式和目标格式
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
// 将字符串解析为 Date 对象
Date date = inputFormat.parse(strDate);
// 将 Date 对象格式化为目标格式
String formattedDate = outputFormat.format(date);
// 输出结果
System.out.println("格式化后的时间:" + formattedDate);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
```
上述代码中:
- 使用 `SimpleDateFormat` 的 `parse()` 方法将字符串解析为 `Date` 对象。
- 再通过 `format()` 方法将 `Date` 对象格式化为目标字符串格式 `yyyy-MM-dd HH:mm:ss`。
- 最终输出格式化后的字符串。
需要注意的是,如果输入字符串的格式与定义的解析格式不一致,可能会抛出 `ParseException` 异常,因此需要进行异常处理[^2]。
### 线程安全问题
由于 `SimpleDateFormat` 不是线程安全的,在多线程环境下使用时可能会导致数据错误或不可预测的行为。为了确保线程安全,可以考虑使用 `DateTimeFormatter`(Java 8 及以上版本),它是一个线程安全的日期格式化工具。
以下是使用 `DateTimeFormatter` 的替代方案:
```java
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Java8DateFormatExample {
public static void main(String[] args) {
// 输入的字符串时间
String strDate = "2023-01-05";
// 定义输入格式和目标格式
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 将字符串解析为 LocalDate 对象
LocalDate localDate = LocalDate.parse(strDate, inputFormatter);
// 将 LocalDate 转换为 LocalDateTime,并设置默认时间值
LocalDateTime localDateTime = localDate.atStartOfDay();
// 将 LocalDateTime 转换为目标格式的字符串
String formattedDate = outputFormatter.format(localDateTime);
// 输出结果
System.out.println("格式化后的时间:" + formattedDate);
}
}
```
通过上述代码可以实现相同的功能,并且 `DateTimeFormatter` 是线程安全的,适合在并发环境下使用。
阅读全文
相关推荐
















