Flutter中如何将DateTime仅格式化显示时间,去除日期与年份?
Flutter DateTime仅显示时间部分的格式化方案
你可以通过两种方式实现只显示DateTime的时间部分,去掉日期和年份:
方法一:使用intl包(推荐,支持灵活格式与多语言)
- 先在
pubspec.yaml中添加依赖:
dependencies: intl: ^0.18.1 # 版本号可根据最新情况调整
- 执行
flutter pub get安装依赖后,在代码中导入包:
import 'package:intl/intl.dart';
- 格式化日出日落时间,替换原来的Text组件内容:
Text( DateFormat('HH:mm').format(vSunrise), // 24小时制,如"06:30" // 或者用12小时制带AM/PM:DateFormat.jm().format(vSunrise),如"6:30 AM" textAlign: TextAlign.left, style: TextStyle( fontWeight: FontWeight.w600, fontSize: 14.sp, letterSpacing: 0.2, color: AppTheme.grey, ), ),
你可以根据需求自定义格式字符串,比如'h:mm a'对应12小时制带上午/下午标识,'HH:mm:ss'显示时分秒。
方法二:原生代码实现(无需第三方包)
如果不想依赖intl包,可以直接提取DateTime的小时和分钟,处理补零逻辑后拼接:
// 封装一个格式化函数 String formatTime(DateTime time) { String hour = time.hour.toString().padLeft(2, '0'); String minute = time.minute.toString().padLeft(2, '0'); return '$hour:$minute'; } // 使用时 Text( formatTime(vSunrise), textAlign: TextAlign.left, style: TextStyle( fontWeight: FontWeight.w600, fontSize: 14.sp, letterSpacing: 0.2, color: AppTheme.grey, ), ),
这种方式适合简单的时间格式化场景,不需要额外依赖。
内容的提问来源于stack exchange,提问作者Ashrith Shetty
相关产品推荐
相关产品推荐

