You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:52:12