如何在Dart中将ISO 8601日期转换为DD/MM/YYYY及时分秒可读格式
日期格式转换与格式名称说明
该日期格式的名称
你提到的 "2022-07-17T01:46:12.632892+05:30" 是 ISO 8601 标准的日期时间表示法,属于带时区偏移的扩展格式。其中:
T是日期与时间的分隔符- 末尾的
+05:30代表该时间相对于UTC(协调世界时)的时区偏移量(快5小时30分钟)
转换为目标格式的方法
以下是两种主流编程语言的实现示例:
Python 实现
利用内置的 datetime 模块即可完成解析与格式化:
from datetime import datetime raw_datetime = "2022-07-17T01:46:12.632892+05:30" # 解析ISO 8601格式字符串为datetime对象 dt = datetime.fromisoformat(raw_datetime) # 格式化为DD/MM/YYYY date_result = dt.strftime("%d/%m/%Y") # 格式化为hh:mm:ss time_result = dt.strftime("%H:%M:%S") print(date_result) # 输出: 17/07/2022 print(time_result) # 输出: 01:46:12
如果需要转换为本地时区的时间,可在解析后调用 dt.astimezone() 方法。
JavaScript 实现
通过原生 Date 对象结合字符串处理实现:
const rawDatetime = "2022-07-17T01:46:12.632892+05:30"; const dateObj = new Date(rawDatetime); // 生成DD/MM/YYYY格式日期 const dateResult = `${String(dateObj.getDate()).padStart(2, '0')}/${String(dateObj.getMonth() + 1).padStart(2, '0')}/${dateObj.getFullYear()}`; // 生成hh:mm:ss格式时间 const timeResult = `${String(dateObj.getHours()).padStart(2, '0')}:${String(dateObj.getMinutes()).padStart(2, '0')}:${String(dateObj.getSeconds()).padStart(2, '0')}`; console.log(dateResult); // 输出: 17/07/2022 console.log(timeResult); // 输出: 01:46:12
若需保留原时区的时间而非转换为本地时区,可使用 Intl.DateTimeFormat 并指定时区参数:
const formatter = new Intl.DateTimeFormat('en-GB', { timeZone: 'Asia/Kolkata', // 对应+05:30时区 year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }); const parts = formatter.formatToParts(dateObj); const dateResult = `${parts.find(p => p.type === 'day').value}/${parts.find(p => p.type === 'month').value}/${parts.find(p => p.type === 'year').value}`; const timeResult = `${parts.find(p => p.type === 'hour').value}:${parts.find(p => p.type === 'minute').value}:${parts.find(p => p.type === 'second').value}`;
内容的提问来源于stack exchange,提问作者coolhack7
相关产品推荐
相关产品推荐

