Flutter 检查输入的日期是否小于18年
我设法从18年前的今天得到了日期:Flutter 检查输入的日期是否小于18年,flutter,dart,Flutter,Dart,我设法从18年前的今天得到了日期: var formatter = DateFormat('dd/MM/yyyy'); DateTime today = DateTime.now(); final eighteenY = DateTime(today.year - 18, today.month, today.day); 但现在我需要检查用户输入的日期是否在该日期和今天之间,如果是,则他们未超过18岁。我该怎么办?这是我的密码: MaskedTextController _maskDOB
var formatter = DateFormat('dd/MM/yyyy');
DateTime today = DateTime.now();
final eighteenY = DateTime(today.year - 18, today.month, today.day);
但现在我需要检查用户输入的日期是否在该日期和今天之间,如果是,则他们未超过18岁。我该怎么办?这是我的密码:
MaskedTextController _maskDOBController =
MaskedTextController(mask: '00/00/0000');
@override
Widget build(BuildContext context) {
return Scaffold(
body:
return Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
height: 48,
width: 500,
child: TextFormField(
controller: _maskDOBController,
onChanged: (string){
setState(() {
provider.dobString = string;
dobError = false;
});
},
),
),
],
),
),
Container(height: 80),
Container(
GestureDetector(
onTap: (){
// if the date a user enters in textfield is between that date and today's date
// print('user is underage');
}
child: Text(
'Continue'
),
),
);
这个问题是重复的,但我有一个解决方案,我现在使用,我喜欢我觉得值得分享 您可以使用扩展将函数设置为DateTime。例如: DateTime上的扩展DateTimeX{ bool isUnderage()=> (DateTime(DateTime.now().year,this.month,this.day) .isAfter(DateTime.now()) ?DateTime.now().year-this.year-1 :DateTime.now().year-this.year)<18; } void main(){ final today=DateTime.now(); 最后十七天=日期时间(今天.year-18,今天.month,今天.day+1); 最终十八日=日期时间(今天.year-18,今天.month,今天.day); 打印(今天,isUnderage()); 印刷品(十七岁,未成年(); 印刷品(18岁未成年人()); }
值得注意的是,这不需要
intl
或任何其他外部包。将此项粘贴到中进行测试。这是否回答了您的问题?是的,很好,谢谢你。实际上我还没有试过你的答案,但是评论把我和这个问题的第一个答案联系起来了,不客气!大多数解决方案都是可行的,这完全取决于你喜欢什么样的语法。你应该小心使用.utc,否则你可能会跨越DST边界,这会搞砸比较。