尝试从位置 17 的 DATE HOUR 读取 DateTime 抛出错误
Trying to read from DATE HOUR at position 17 DateTime throwing error
我有两个 DateTimePicker
,我想给它们设置上午和下午,这只是 DateTimePicker
之一。
DateTimePicker(
type: DateTimePickerType.dateTimeSeparate,
dateMask: 'd MMM, yyyy a',
initialValue: "Enter Boarding date",
firstDate: DateTime(2000),
lastDate: DateTime(2100),
icon: Icon(Icons.event),
dateLabelText: 'Date',
timeLabelText: "Hour",
locale: Locale('am', 'ET'),
use24HourFormat: false,
onChanged: (val) {
_boardingDate.text = val;
},
validator: (val) {
print(val);
return null;
},
onSaved: (val) => print(val),
),
TextEditingController _boardingDate = TextEditingController();
我想把它转换成类似
的值
YEAR-MONTH-DATE HOUR:MINUTE AM/PM
这就是我转换它的方式..我不知道我是否正确。
DateFormat inputFormat = DateFormat('yyyy-MM-dd hh:mm a');
String _arrival = inputFormat.parse(_arrivalDate.text).toString();
String _boarding = inputFormat.parse(_boardingDate.text).toString();
那么它不想分配 AM/PM。当我从 inputFormat
变量中删除最后一个 a
时,它起作用了。但是当它在那里时它会抛出这个错误
The following FormatException was thrown while handling a gesture:
Trying to read from 2021-09-25 04:20 at position 17
我使用 node.js 作为接受日期时间的后端。
试试这个,
将其转换为 DataTime
,然后格式化为 String
DateTime _arrivalDatetime = DateTime.parse(_arrivalDate.text);
String _arrival = DateFormat("yyyy-MM-dd hh:mm a").format(_arrivalDatetime);
DateTime _boardingDatetime = DateTime.parse(_boardingDate.text);
String _boarding = DateFormat("yyyy-MM-dd hh:mm a").format(_boardingDatetime);
或者
String dataTimeTextFormater(String text) {
String formatedText = '';
DateTime datetime = DateTime.parse(text);
formatedText = DateFormat("yyyy-MM-dd hh:mm a").format(datetime);
return formatedText;
}
String _arrival = dataTimeTextFormater(_arrivalDate.text);
String _boarding = dataTimeTextFormater(_boardingDate.text);
我在 dartpad 中尝试并且有输出,它应该可以工作
我想你说过
registers the time only
我猜你有一个 textfield
和 _boardingDate
,
DateTimePicker
选择日期但格式错误,
您对其进行了格式化,但 UI 尚未更新。
你可以把 onchange
改成
onChanged: (val) {
_boardingDate.text = dataTimeTextFormater(val);
},
我有两个 DateTimePicker
,我想给它们设置上午和下午,这只是 DateTimePicker
之一。
DateTimePicker(
type: DateTimePickerType.dateTimeSeparate,
dateMask: 'd MMM, yyyy a',
initialValue: "Enter Boarding date",
firstDate: DateTime(2000),
lastDate: DateTime(2100),
icon: Icon(Icons.event),
dateLabelText: 'Date',
timeLabelText: "Hour",
locale: Locale('am', 'ET'),
use24HourFormat: false,
onChanged: (val) {
_boardingDate.text = val;
},
validator: (val) {
print(val);
return null;
},
onSaved: (val) => print(val),
),
TextEditingController _boardingDate = TextEditingController();
我想把它转换成类似
的值YEAR-MONTH-DATE HOUR:MINUTE AM/PM
这就是我转换它的方式..我不知道我是否正确。
DateFormat inputFormat = DateFormat('yyyy-MM-dd hh:mm a');
String _arrival = inputFormat.parse(_arrivalDate.text).toString();
String _boarding = inputFormat.parse(_boardingDate.text).toString();
那么它不想分配 AM/PM。当我从 inputFormat
变量中删除最后一个 a
时,它起作用了。但是当它在那里时它会抛出这个错误
The following FormatException was thrown while handling a gesture:
Trying to read from 2021-09-25 04:20 at position 17
我使用 node.js 作为接受日期时间的后端。
试试这个,
将其转换为 DataTime
,然后格式化为 String
DateTime _arrivalDatetime = DateTime.parse(_arrivalDate.text);
String _arrival = DateFormat("yyyy-MM-dd hh:mm a").format(_arrivalDatetime);
DateTime _boardingDatetime = DateTime.parse(_boardingDate.text);
String _boarding = DateFormat("yyyy-MM-dd hh:mm a").format(_boardingDatetime);
或者
String dataTimeTextFormater(String text) {
String formatedText = '';
DateTime datetime = DateTime.parse(text);
formatedText = DateFormat("yyyy-MM-dd hh:mm a").format(datetime);
return formatedText;
}
String _arrival = dataTimeTextFormater(_arrivalDate.text);
String _boarding = dataTimeTextFormater(_boardingDate.text);
我在 dartpad 中尝试并且有输出,它应该可以工作
我想你说过
registers the time only
我猜你有一个 textfield
和 _boardingDate
,
DateTimePicker
选择日期但格式错误,
您对其进行了格式化,但 UI 尚未更新。
你可以把 onchange
改成
onChanged: (val) {
_boardingDate.text = dataTimeTextFormater(val);
},