将字符串转换为日期时间时出错:字符串不能是日期时间的类型

发布于 2025-01-11 23:24:30 字数 389 浏览 0 评论 0原文

我从 API 获取数据,日期以字符串值形式出现。我正在将字符串数据转换为日期时间并尝试对其进行格式化。

问题是传入的数据永远不会为空。如果它为空,则显示为“N/A”,因此会给出错误。我认为它在解析时出错,因为数据以 N/A 形式出现。

未采用“N/A”格式的数据已完美格式化。

String endDate = "N/A";
    if (data.endDate != null) {
      var endDateTime = DateTime.parse(data.endDate!);
      endDate = DateFormat('yyyy-MM-dd').format(endDateTime);
    }

有没有办法格式化数据还是我应该放弃?

I get data from an API and the date comes in String value. I am converting String data to DateTime and trying to format it.

The problem is that the incoming data never comes as null. If it is null it comes as "N/A" and therefore gives an error. I think it gave an error while parsing because the data came in N/A form.

Data that didn't come in "N/A" format was perfectly formatted.

String endDate = "N/A";
    if (data.endDate != null) {
      var endDateTime = DateTime.parse(data.endDate!);
      endDate = DateFormat('yyyy-MM-dd').format(endDateTime);
    }

Is there a way to format the data or should I give up?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千鲤 2025-01-18 23:24:30

我只会使用 DateTime.tryParse 并检查结果是否为 null 表示解析失败。

var endDateTime = DateTime.tryParse(data.endDate ?? '');
var endDate = (endDateTime == null)
    ? "N/A"
    : DateFormat('yyyy-MM-dd').format(endDateTime);

请注意,上面的内容将使用“N/A”来表示任何解析失败。

I would just use DateTime.tryParse and check if the result is null to indicate that parsing failed.

var endDateTime = DateTime.tryParse(data.endDate ?? '');
var endDate = (endDateTime == null)
    ? "N/A"
    : DateFormat('yyyy-MM-dd').format(endDateTime);

Note that the above would use "N/A" for any parsing failure.

数理化全能战士 2025-01-18 23:24:30

像这样吗?:

var endDateTime = DateTime.parse(data.endDate!);

String endDate = (!data.endData || data.endData === 'N/A') ? 'N/A' : DateFormat('yyyy-MM-dd').format(endDateTime)

让我知道。

Something like this?:

var endDateTime = DateTime.parse(data.endDate!);

String endDate = (!data.endData || data.endData === 'N/A') ? 'N/A' : DateFormat('yyyy-MM-dd').format(endDateTime)

Let me know.

徒留西风 2025-01-18 23:24:30

解决方案

 String endDate = "N/A";
    if (data.endDate!.length > 3) {
      var endDateTime = DateTime.parse(data.endDate!);
      endDate = DateFormat('yyyy-MM-dd').format(endDateTime);
    }

Solution

 String endDate = "N/A";
    if (data.endDate!.length > 3) {
      var endDateTime = DateTime.parse(data.endDate!);
      endDate = DateFormat('yyyy-MM-dd').format(endDateTime);
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文