如何在Flutter中去除日期中的时间戳?
解决方法
你现在的问题是直接把DateTime对象转成字符串,所以会带出时间戳。要只保留日期部分,有两种简单的方法:
方法一:直接截取字符串(无需额外依赖)
DateTime的toString()输出格式是yyyy-MM-dd HH:mm:ss.sss,直接取前10位就能得到纯日期:
endDateController.text = thirtyDaysFromNow.toString().substring(0, 10);
方法二:用intl包格式化(推荐,支持自定义格式)
如果需要更灵活的日期格式(比如yyyy年MM月dd日),可以用官方推荐的intl包:
- 先在
pubspec.yaml里添加依赖:
dependencies: intl: ^0.18.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
相关产品推荐
相关产品推荐

