Android 如何检查文本字段中输入的日期在Dart/FLIFT中是否有效?
我在3个文本字段中选择了日、月和年,但没有DateTime属性或函数提供验证 我使用了DateTime.parse(str)来获取日期,但是如果输入的月份字段也超过12天,它会将剩余的月份添加到年中Android 如何检查文本字段中输入的日期在Dart/FLIFT中是否有效?,android,flutter,dart,Android,Flutter,Dart,我在3个文本字段中选择了日、月和年,但没有DateTime属性或函数提供验证 我使用了DateTime.parse(str)来获取日期,但是如果输入的月份字段也超过12天,它会将剩余的月份添加到年中 bool isDate(String str) { try { DateTime.parse(str); return true; } catch (e) { return false; } } 我想如果有人在字符串中输入'20053050'是false而不是t
bool isDate(String str) {
try {
DateTime.parse(str);
return true;
} catch (e) {
return false;
}
}
我想如果有人在字符串中输入'20053050'是false而不是true。
但是这个函数总是返回真的
日期时间构造函数允许无效范围似乎是一个问题: 以下是一个解决方法: 您可以这样使用它:
bool isValidDate(String input) {
try {
final date = DateTime.parse(input);
final originalFormatString = toOriginalFormatString(date);
return input == originalFormatString;
} catch(e) {
return false;
}
}
String toOriginalFormatString(DateTime dateTime) {
final y = dateTime.year.toString().padLeft(4, '0');
final m = dateTime.month.toString().padLeft(2, '0');
final d = dateTime.day.toString().padLeft(2, '0');
return "$y$m$d";
}
您可以尝试将日期收集为字符串(例如,
string\u enteredDate
),并使用DateFormat
和您的格式设置首选项将其转换为所需的日期格式,并使用DateTime.parse来解析字符串。例如:
_formattedDate = DateFormat('MM-dd-yyyy').format(DateTime.parse(_enteredDate))
如果用户输入了无效的日期格式,则应该有一个错误,您可以捕获并发出警报。现在有一个简单的方法可以尝试。这就是方法。
对于无效的日期格式,它只返回null
if(DateTime.tryParse(timeString) != null){
DateTime date = DateTime.parse(timeString);
}
如果您只是在寻找一种方便的方式从用户那里获取某个日期,那么有两个好的软件包可以让这变得更容易-可以签出或使用DateTime.tryParse(str)