iso 8601的时间格式转换
时间: 2025-01-28 22:27:03 浏览: 84
### ISO 8601 时间格式转换
ISO 8601 是一种国际标准化的时间表示方式,广泛应用于全球范围内的数据交换。该格式使用连字符 `-` 分隔日期各部分,并以 `T` 字符分隔日期和时间,在某些情况下还会附带时区信息。
#### JavaScript 中的 ISO 8601 转换
在JavaScript中可以利用内置对象 `Date` 来处理 ISO 8601 格式的字符串:
```javascript
const isoString = '2023-03-09T23:43:43+08:00';
const dateObj = new Date(isoString);
console.log(dateObj.toLocaleDateString()); // 输出本地化的日期形式
console.log(dateObj.toISOString()); // 返回标准的 ISO 8601 字符串
```
对于更复杂的场景或需要自定义输出格式的情况,则推荐借助第三方库 moment.js 或者 Luxon (Moment 的继任者),这些工具提供了更加灵活强大的 API 支持[^1]。
#### Java 中的 ISO 8601 解析与格式化
Java 提供了多种类来操作日期时间和持续期,特别是自从引入了新的 DateTime API(JSR 310)。要解析并重新格式化一个 ISO 8601 形式的字符串为另一种格式,可采用如下代码片段实现:
```java
import java.time.*;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) throws Exception {
String inputIsoTimeStr = "2015-06-27T13:16:37.363Z";
Instant instant = Instant.parse(inputIsoTimeStr);
ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
System.out.println(zdt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
}
```
这段程序首先通过 `Instant.parse()` 函数读取给定的 ISO 8601 字符串,接着将其调整到当前系统的默认时区内显示,并最终按照指定模式打印出来[^2]。
#### 将 ISO 8601 持续期间转成秒数
当涉及到的是描述时间段而非具体时刻的数据时——即所谓的“持续期间”,则可以通过下面的方式计算其对应的总秒数:
```java
import java.time.Duration;
import java.time.Period;
public class DurationExample {
public static void main(String[] args){
String isoDurationString = "P2D"; // PnYnMnDTnHnMnS, 这里代表两天
Period period = Period.parse(isoDurationString);
Duration duration = Duration.ofDays(period.getDays());
long totalSeconds = duration.getSeconds();
System.out.printf("%s 对应 %d 秒%n", isoDurationString, totalSeconds);
}
}
```
此例子展示了如何把形如 `"P2D"` 的 ISO 8601 持久化表达转化为实际秒钟数量[^3]。
阅读全文
相关推荐


















