gpt4 book ai didi

datetime - 如何检查给定日期是否存在于 DART 中?

转载 作者:IT王子 更新时间:2023-10-29 07:09:08 31 4
gpt4 key购买 nike

如果您将不存在/非真实的日期传递给 DateTime(构造函数或解析方法),例如:'20181364' (2018/13/64),则不会引发异常。而是返回计算出的 DateTime。

例子:'20181364' --> 2019-03-05 00:00:00.000

如何检查给定日期是否真的存在/是否有效?

我尝试使用 DartPad 解决这个问题(但没有成功),所以这里不需要 Flutter doctor 输出。

void main() {
var inputs = ['20180101', // -> 2018-01-01 00:00:00.000
'20181231', // -> 2018-12-31 00:00:00.000
'20180230', // -> 2018-03-02 00:00:00.000
'20181301', // -> 2019-01-01 00:00:00.000
'20181364'];// -> 2019-03-05 00:00:00.000

inputs.forEach((input) => print(convertToDate(input)));
}

String convertToDate(String input){
return DateTime.parse(input).toString();
}

如果存在某种方法来检查给定日期是否确实存在/是否有效,那就太好了,例如:

  • DateTime 中的验证函数
  • 另一个不使用 DateTime.parse() 进行验证的库

你会如何解决这个问题?

最佳答案

您可以将解析的日期转换为原始格式的字符串,然后比较它是否与输入匹配。

void main() {
var inputs = ['20180101', // -> 2018-01-01 00:00:00.000
'20181231', // -> 2018-12-31 00:00:00.000
'20180230', // -> 2018-03-02 00:00:00.000
'20181301', // -> 2019-01-01 00:00:00.000
'20181364'];// -> 2019-03-05 00:00:00.000

inputs.forEach((input) {
print("$input is valid string: ${isValidDate(input)}");
});
}

bool isValidDate(String input) {
final date = DateTime.parse(input);
final originalFormatString = toOriginalFormatString(date);
return input == originalFormatString;
}

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";
}

关于datetime - 如何检查给定日期是否存在于 DART 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080005/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com