Flutter中如何格式化TimePicker选择的时间?
解决方案
要使用intl包把TimeOfDay格式化为2:30 PM的样式,你需要先将TimeOfDay转换为DateTime对象(因为intl的DateFormat仅支持处理DateTime类型),再进行格式化。以下是修改后的完整代码:
import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; class ShowTimePickerWidget extends StatefulWidget { const ShowTimePickerWidget({super.key}); @override State<ShowTimePickerWidget> createState() => _ShowTimePickerWidgetState(); } class _ShowTimePickerWidgetState extends State<ShowTimePickerWidget> { TimeOfDay? selectedTime; @override Widget build(BuildContext context) { return Row( children: [ const Icon(Icons.access_time), Expanded( child: TextButton( onPressed: () async { TimeOfDay time = TimeOfDay.now(); final pickedTime = await showTimePicker( context: context, initialTime: time, ); setState(() { selectedTime = pickedTime; }); }, child: Text( (selectedTime == null) ? 'Time to start your day' : DateFormat('h:mm a').format( DateTime(2020, 1, 1, selectedTime!.hour, selectedTime!.minute), ), ), ), ), ], ); } }
关键说明:
- TimeOfDay转DateTime:我们创建了一个任意日期的
DateTime对象(这里用2020-01-01,日期部分不影响时间格式化),传入selectedTime的小时和分钟数值即可。 - 格式化规则解析:
DateFormat('h:mm a')里的各部分含义:h:12小时制的小时(不带前导零)mm:两位格式的分钟数a:自动显示AM/PM标识
这样就能生成你需要的2:30 PM格式的时间字符串了。
内容的提问来源于stack exchange,提问作者Twisha Solgama
相关产品推荐
相关产品推荐

