java8日期格式化-时间自动补零

Java 8引入了java.time包,提供DateTimeFormatter和LocalDateTime等新API,以更安全和方便的方式处理日期时间。DateTimeFormatter的静态方法支持自定义格式,能自动补全不足两位的日期和时间部分,例如使用'yyyy-M-d HⓂ️ss'格式化字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java8时间自动补零

从Java 8开始,java.time包提供了新的日期和时间API,以及一套新的用于取代SimpleDateFormat的格式化类型DateTimeFormatter。

DateTimeFormatter和LocalDateTime

DateTimeFormatter和LocalDateTime都是被final修饰的,可保障线程安全。格式化要用的方法还是静态的,用起来比SimpleDateFormat舒服多了。

public final class DateTimeFormatter {
   

    public static DateTimeFormatter ofPattern(String pattern) {
   
        return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter
### 编程语言中的日期格式化类或方法 不同编程语言提供了多种内置类或库来处理日期格式化和解析。以下是几种常见编程语言中用于格式化日期的方法及其使用示例。 --- #### **Java 8** Java 8 引入了新的 `java.time` 包,其中包含了强大的日期时间处理工具。对于日期格式化的操作,可以使用 `LocalDateTime` 类以及其配套的 `DateTimeFormatter` 工具[^1]。 ##### 示例代码 ```java import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { String dateTimeStr = "2017-08-3 12:30"; // 定义输入日期时间格式 DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-d HH:mm"); // 解析字符串为 LocalDateTime 对象 LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr.replace(" ", "T"), inputFormatter); // 定义输出日期时间格式 DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 格式化为所需的字符串形式 String formattedDate = localDateTime.format(outputFormatter); System.out.println(formattedDate); // 输出:2017-08-03 12:30:00 } } ``` ##### 关键点说明 - 输入日期字符串 `"2017-08-3 12:30"` 不符合标准 ISO-8601 格式,因此需要手动替换空格为 `T` 后再解析。 - 使用 `DateTimeFormatter` 显式指定输入和输出的日期格式[^1]。 --- #### **JavaScript/Vue.js** 在 JavaScript 或 Vue.js 中,通常会借助第三方库(如 Moment.js 或 Day.js)来进行复杂的日期格式化操作。然而,现代浏览器也支持原生的 `Intl.DateTimeFormat` 接口[^2]。 ##### 示例代码 ```javascript // 原始日期字符串 const dateStr = "2023-12-11T18:51:32"; // 创建 Date 对象 const dateObj = new Date(dateStr); // 格式化为目标格式 yyyy-MM-dd hh:mm:ss function formatDate(date) { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; } console.log(formatDate(dateObj)); // 输出:2023-12-11 18:51:32 ``` ##### 关键点说明 - 利用 `Date.prototype` 提供的基础方法提取年、月、日、时、分、秒等字段。 - 使用 `String.padStart()` 方法确保月份、日期等不足两位数的部分补零[^2]。 --- #### **Python** Python 的 `datetime` 模块是一个非常方便的工具,可以直接用来格式化日期对象[^3]。 ##### 示例代码 ```python from datetime import datetime # 原始日期字符串 date_str = "2023-12-11T18:51:32" # 将字符串解析为 datetime 对象 dt_obj = datetime.strptime(date_str, "%Y-%m-%dT%H:%M:%S") # 格式化为目标格式 formatted_date = dt_obj.strftime("%Y-%m-%d %H:%M:%S") print(formatted_date) # 输出:2023-12-11 18:51:32 ``` ##### 关键点说明 - 使用 `strptime` 方法将字符串解析为 `datetime` 对象。 - 使用 `strftime` 方法重新格式化日期字符串[^3]。 --- #### **Elasticsearch Painless Scripting** 在 Elasticsearch 的 painless 脚本中也可以进行简单的日期格式化操作[^4]。 ##### 示例代码 ```painless def isoDate = "2023-12-11T18:51:32Z"; def formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX"); // 解析并格式化日期 def parsedDate = ZonedDateTime.parse(isoDate, formatter); return parsedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); ``` ##### 关键点说明 - 使用 `DateTimeFormatter` 来定义输入和输出的日期格式。 - 结合 `ZonedDateTime` 处理带有时区信息的日期字符串[^4]。 --- ### 总结 不同的编程语言都提供了各自的日期格式化工具有所侧重的功能特性。无论是 Java 的 `DateTimeFormatter`,还是 Python 的 `datetime` 模块,亦或是 JavaScript 的自定义实现,都可以满足常见的日期格式化需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值