如何在Dart中将带时分秒的日期字符串转为'dd/MM/yyyy'格式?
解决方法
你的问题出在多做了一次不必要的解析操作:DateTime.parse(parseDate.toString())会把解析好的DateTime对象转成默认的ISO格式字符串,再解析回去,自然得到的是ISO格式的输出。
有两种简单的方式实现你的需求:
方法一:直接截取原字符串(格式固定时推荐)
因为你的原日期字符串格式是固定的dd/MM/yyyy HH:mm:ss,日期部分正好是前10个字符,直接截取即可:
var date = '31/12/2023 00:00:00'; var displayDate = date.substring(0, 10); print(displayDate); // 输出: 31/12/2023
方法二:用intl库格式化DateTime对象(更规范)
如果你已经把字符串解析成了DateTime对象,直接用DateFormat重新格式化成你想要的字符串就行,不需要再转成ISO格式:
import 'package:intl/intl.dart'; var date = '31/12/2023 00:00:00'; // 解析时要匹配原字符串的完整格式,避免解析错误 DateTime parseDate = DateFormat("dd/MM/yyyy HH:mm:ss").parse(date); var displayDate = DateFormat("dd/MM/yyyy").format(parseDate); print(displayDate); // 输出: 31/12/2023
注意:你之前用"dd/MM/yyyy"解析带时间的字符串虽然能运行,但更规范的写法是用"dd/MM/yyyy HH:mm:ss",避免潜在的解析问题
把displayDate放到Text组件里就能显示你想要的格式了。
内容的提问来源于stack exchange,提问作者user2251369
相关产品推荐
相关产品推荐

