颤振,无法将字符串转换为日期时间格式



我使用showDatePickerTextField中获得数据输入。我将选择的数据转换为字符串,并使用intl格式将其解析为dd-mm-yy格式。根据文档DateFormat('ymd')是这样做的。但我得到错误FormatException: Trying to read m from 2022-06-04 00:00:00.000 at position 4。什么是正确的方式转换成这种格式,为什么我得到这个错误。我引用的文档- https://api.flutter.dev/flutter/intl/DateFormat-class.html

代码
TextField(
keyboardType: TextInputType.datetime,
controller: paidDateController,
onTap: () async {
DateTime? PickedDate = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2010),
lastDate: DateTime(2026));
if (PickedDate != null) {
setState(() {
formatDate = PickedDate.toString();
paidDate = DateFormat('ymd').parse(formatDate);
print(paidDate);
});
} else {
Get.snackbar('Error', 'Pick paid date',
backgroundColor: Colors.red);
}
},
decoration:
kTextFieldDecocation.copyWith(hintText: 'Paid Date'),
), 

formatDate为字符串数据类型,paidDate为日期时间数据类型。

嗯,我想你给这部分的格式

paidDate = DateFormat('ymd').parse(formatDate);

显示总是错误,因为如果你试图解析日期是由showDateTimePicker给出的格式将像2022-06-05 15:00:12,这也如果你试图传递这个。这可能不会解析,因为DateFormat('yMd')DateFormat.yMd()的读取模式日期类似于"05/06/2022"所以你试着像这样

final formatDate1 = "2022-05-06";
final formForMatted = DateFormat('dd/MM/yyyy').format(DateTime.parse(formatDate1));
final  paidDate1 = DateFormat.yMd().parse(formForMatted);
print(paidDate1); // as result 2022-06-05 00:00:00.000

但是如果你想要一个像5/6/2022这样的结果试试这个

final formatDate1 = "2022-05-06";
final paidDate1 = DateFormat.yMd().format(DateTime.parse(formatDate1));
print(paidDate1); // as result 5/6/2022

相关内容

  • 没有找到相关文章

最新更新