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

如何在Flutter中去除日期中的时间戳?

解决方法

你现在的问题是直接把DateTime对象转成字符串,所以会带出时间戳。要只保留日期部分,有两种简单的方法:

方法一:直接截取字符串(无需额外依赖)

DateTime的toString()输出格式是yyyy-MM-dd HH:mm:ss.sss,直接取前10位就能得到纯日期:

endDateController.text = thirtyDaysFromNow.toString().substring(0, 10);

方法二:用intl包格式化(推荐,支持自定义格式)

如果需要更灵活的日期格式(比如yyyy年MM月dd日),可以用官方推荐的intl包:

  1. 先在pubspec.yaml里添加依赖:
dependencies:
  intl: ^0.18.1 # 版本号以最新为准
  1. 导入包并使用DateFormat:
import 'package:intl/intl.dart';

// ...

endDateController.text = DateFormat('yyyy-MM-dd').format(thirtyDaysFromNow);

另外,你代码里setState中的startDate;和duration;是无效代码,可以直接删掉,不影响功能。

修改后的按钮代码示例:

child: ElevatedButton(
  onPressed: () async {
    String startDate = startDateController.text;
    String duration = durationController.text;

    DateTime thirtyDaysFromNow = DateTime.now().add(Duration(days: 12));

    setState(() {
      // 选方法一就用这句
      endDateController.text = thirtyDaysFromNow.toString().substring(0, 10);
      // 选方法二就用这句(需先导入intl包)
      // endDateController.text = DateFormat('yyyy-MM-dd').format(thirtyDaysFromNow);
    });

    print(thirtyDaysFromNow.toString().substring(0, 10));
  },
  child: const Text("Save"),
  style: ButtonStyle(
    backgroundColor: MaterialStateProperty.all(Color.fromARGB(255, 3, 89, 168))
  ),
),

内容的提问来源于stack exchange,提问作者Swati Suryawanshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:50:38