Flutter(Dart)中如何将yyyy-MM-dd'T'HH:mm:ss格式字符串转为普通日期
解决思路:将ISO格式日期字符串转换为指定展示格式
核心逻辑分两步:先把yyyy-MM-dd'T'HH:mm:ss格式的字符串解析为日期类型对象,再将该对象格式化为dd/MM/yyyy格式的字符串。以下是几种主流编程语言的实现示例:
Java 实现(Java 8+ 推荐使用新日期API)
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class DateConverter { public static void main(String[] args) { String isoDateStr = "2024-05-20T14:30:00"; // 解析ISO字符串为LocalDateTime对象 DateTimeFormatter isoFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; LocalDateTime dateTime = LocalDateTime.parse(isoDateStr, isoFormatter); // 格式化为dd/MM/yyyy DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); String formattedDate = dateTime.format(targetFormatter); System.out.println(formattedDate); // 输出:20/05/2024 } }
Python 实现
from datetime import datetime iso_date_str = "2024-05-20T14:30:00" # 解析ISO字符串为datetime对象 date_obj = datetime.fromisoformat(iso_date_str) # 格式化为dd/MM/yyyy formatted_date = date_obj.strftime("%d/%m/%Y") print(formatted_date) # 输出:20/05/2024
JavaScript 实现
const isoDateStr = "2024-05-20T14:30:00"; // 解析ISO字符串为Date对象 const dateObj = new Date(isoDateStr); // 手动格式化为dd/MM/yyyy const day = String(dateObj.getDate()).padStart(2, '0'); const month = String(dateObj.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需加1 const year = dateObj.getFullYear(); const formattedDate = `${day}/${month}/${year}`; console.log(formattedDate); // 输出:20/05/2024
关键注意点
- 解析时必须匹配原字符串的格式(比如
yyyy-MM-dd'T'HH:mm:ss对应ISO标准格式,多数语言有内置的解析器支持); - 格式化时要注意日期占位符的规则(比如Python中
%d代表两位日期,%m代表两位月份;Java中dd、MM同理); - 部分语言的日期API存在时区差异,若涉及跨时区场景,需额外指定时区参数。
内容的提问来源于stack exchange,提问作者GalloPinto
相关产品推荐
相关产品推荐

