我试图通过解析输入字符串来判断用户输入是否正确. 在下面的代码中,26-10-2应该抛出一个错误,因为2不是一个有效的年份.然而,它似乎是正确的.我只想接受4位数,即2020年,2021年等.

  try {
           DateFormat('d-MM-yyyy').parse("26-10-2");
                    
       } catch (e) {

          log("wrong format");

        }

我知道我可以使用DateTimePicker,但我也希望用户允许他们输入.

推荐答案

事实上,我也很惊讶它接受了这一点.我也认为yyyy只会匹配4位数的年份.在任何情况下,判断的一种方法是查看格式化的解析日期是否与输入相同.所以就像

final dateString = "26-10-2";
final dateformat =  DateFormat('d-MM-yyyy');
final date = dateformat.parse(dateString);
if (dateString == dateformat.format(date)) {
  print('correct');
} else {
  print('incorrect');
}

我不知道有没有更好的办法.

Flutter相关问答推荐

如何在Ffltter Chrome应用程序中使用webview_fltter_web显示自定义html而不是外部uri?

在框中保存对象列表时,类型推断无法正常工作

如何在Flutter 中共享选定文本

无法构建AndroidBundle 包或iOS等

任务';:app:check DebugDuplicateClasss';的Ffltter Share_plus抛出执行失败

为什么FloatingActionButton未显示

当我转到其他屏幕并按下后退按钮时,屏幕将不会刷新

当 Dart SDK 版本范围不匹配时,为什么依赖解析器不会抛出错误?

打开键盘时屏幕组件会被压扁

如何拥有 StreamProvider 的多个侦听器,其中稍后添加的侦听器接收最新数据?

创建混合 TextWidget 和 TextFieldWidget

无法从一个页面导航到下一个页面 (Flutter)

如何与 PostgreSQL 和外部网站交互 flutter apk?

是否有可能减少代码的编写,例如:ref.read(countProvider.notifier) - 在构建方法中?

java.lang.IncompatibleClassChangeError:找到接口 com.google.android.gms.location.SettingsClient,

使用 mocktail 包进行单元测试时,类型Null不是Future类型的子类型

如何使用 Riverpod 在运行时动态创建提供程序?

Flutter 小部件中的视图和逻辑分离

在 Flutter 应用程序中全局使用 assets 文件夹

单击列表视图导航到 Flutter 中的另一个页面