Ris*_*waj 5 android dart flutter
我在 3 个文本字段中使用了日月和年,但没有一个 DateTime 属性或函数提供验证。
我已经使用 DateTime.parse(str) 来获取日期,但是如果月份字段输入的天数超过 12 天,它会将剩余的月份添加到年份中。
bool isDate(String str) {
try {
DateTime.parse(str);
return true;
} catch (e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我想如果有人在字符串中输入 '20053050' 是假的不是真的。但是这个函数总是返回真!!!
有一个简单的方法,您现在就可以尝试。这是tryParse方法。对于无效的日期格式,它只是返回 null。
if(DateTime.tryParse(timeString) != null){
DateTime date = DateTime.parse(timeString);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
使用parseStrict而不只是parse:
DateFormat format = DateFormat("dd.MM.yyyy");
DateTime dayOfBirthDate = format.parseStrict(value); //33.08.2001 - is invalid, 31.13.2001 - is invalid too
DateFormat format = DateFormat("dd.MM.yyyy");
DateTime dayOfBirthDate = format.parse(value); //33.08.2001 - will change to 2.09.2001 (same with months)
Run Code Online (Sandbox Code Playgroud)
DateTime 构造函数允许无效范围似乎是一个问题:DateTime.parse 应该在无效日期上抛出错误...
解决方法如下:如何检查 DART 中是否存在给定日期?
你可以这样使用它:
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";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3396 次 |
| 最近记录: |