Flutter 颤振-将24小时格式转换为12小时格式
我正在使用showTimePicker获得时间Flutter 颤振-将24小时格式转换为12小时格式,flutter,dart,Flutter,Dart,我正在使用showTimePicker获得时间 TimeOfDay _selectedTime; Future<Null> _selectTime(BuildContext context) async { final TimeOfDay timePicked = await showTimePicker( context: context, initialTime: TimeOfDay.now(), ); if
TimeOfDay _selectedTime;
Future<Null> _selectTime(BuildContext context) async {
final TimeOfDay timePicked = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
);
if (timePicked != null)
setState(() {
_selectedTime = timePicked;
});
}
但是这里的时间是24小时制的。假设我选择下午3点,则显示15点,即24小时格式
如何将此时间转换为12小时格式?i、 它应该是下午3点而不是15点
我可以编写逻辑来转换它。但是,是否有内置功能可以执行此操作?您可以使用TimeofDay的hourOfPeriod属性以12小时格式返回小时。当然,这将不会在上午至下午结束:
TimeOfDay _selectedTime;
Future<Null> _selectTime(BuildContext context) async {
final TimeOfDay timePicked = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
);
if (timePicked != null)
setState(() {
_selectedTime = timePicked.replacing(hour: timePicked.hourOfPeriod);
});
print(_selectedTime.toString());
}
您可以使用TimeofDay的hourOfPeriod属性以12小时格式返回小时。当然,这将不会在上午至下午结束:
TimeOfDay _selectedTime;
Future<Null> _selectTime(BuildContext context) async {
final TimeOfDay timePicked = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
);
if (timePicked != null)
setState(() {
_selectedTime = timePicked.replacing(hour: timePicked.hourOfPeriod);
});
print(_selectedTime.toString());
}
我创建了一个扩展,用于将TimeOfDay解析为12小时格式
extension TimeOfDayExtensions on TimeOfDay {
String format12Hour(BuildContext context) {
TimeOfDay time = replacing(hour: this.hourOfPeriod);
MaterialLocalizations localizations = MaterialLocalizations.of(context);
final StringBuffer buffer = StringBuffer();
buffer
..write(time.format(context))
..write(' ')
..write(period == DayPeriod.am
? localizations.anteMeridiemAbbreviation
: localizations.postMeridiemAbbreviation);
return '$buffer';
}
你可以用like
pickedTime?.format12Hour(context);
我创建了一个扩展,用于将TimeOfDay解析为12小时格式
extension TimeOfDayExtensions on TimeOfDay {
String format12Hour(BuildContext context) {
TimeOfDay time = replacing(hour: this.hourOfPeriod);
MaterialLocalizations localizations = MaterialLocalizations.of(context);
final StringBuffer buffer = StringBuffer();
buffer
..write(time.format(context))
..write(' ')
..write(period == DayPeriod.am
? localizations.anteMeridiemAbbreviation
: localizations.postMeridiemAbbreviation);
return '$buffer';
}
你可以用like
pickedTime?.format12Hour(context);
伟大的谢谢:但是,由于某种原因,此解决方案将period参数更改为dayperion.am,即使时间设置为PM时间。我在@HudsonKim之前没有注意到这一点。我会查的,谢谢。太好了!谢谢:但是,由于某种原因,此解决方案将period参数更改为dayperion.am,即使时间设置为PM时间。我在@HudsonKim之前没有注意到这一点。我会查出来的,谢谢。