如何从API返回的ISO标准日期时间字符串中提取小时部分
提取ISO 8601格式时间中小时部分的方案
你给出的2021-09-05T18:16:47.790601+02:00是标准的ISO 8601带时区偏移的时间格式,提取小时可以根据需求选择两种思路:提取原时区的字面小时,或者提取转换为UTC时区后的小时。
通用字符串截取法(不依赖编程语言)
该格式固定为日期部分T时间部分±时区偏移,T字符后前两位就是原时区的小时数值:
- 以示例字符串为例,定位
T的索引为10,向后截取2位即可得到18。
各编程语言内置时间库处理方案
Python
from datetime import datetime, timezone time_str = "2021-09-05T18:16:47.790601+02:00" dt = datetime.fromisoformat(time_str) # 提取原时区(东二区)的小时 local_hour = dt.hour print(local_hour) # 输出 18 # 提取转换为UTC时区后的小时 utc_hour = dt.astimezone(timezone.utc).hour print(utc_hour) # 输出 16
JavaScript
const timeStr = "2021-09-05T18:16:47.790601+02:00"; const date = new Date(timeStr); // 提取原时区的字面小时(字符串截取) const localHour = timeStr.split('T')[1].slice(0,2); console.log(localHour) // 输出 '18' // 提取UTC时区的小时 const utcHour = date.getUTCHours(); console.log(utcHour) // 输出 16
Java
import java.time.OffsetDateTime; public class TimeTest { public static void main(String[] args) { String timeStr = "2021-09-05T18:16:47.790601+02:00"; OffsetDateTime dt = OffsetDateTime.parse(timeStr); // 原时区小时 int localHour = dt.getHour(); System.out.println(localHour); // 输出18 // UTC时区小时 int utcHour = dt.atZoneSameInstant(java.time.ZoneOffset.UTC).getHour(); System.out.println(utcHour); // 输出16 } }
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

