You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中定义空的DateTime?

Dart中定义可空DateTime的解决方法

在Dart里处理"空的DateTime",核心是利用空安全特性或者指定默认值,下面是几种实用方案:

  • 直接使用可空类型(推荐,Dart 2.12+)
    空安全推出后,最简单的方式就是给DateTime加上?标记为可空类型,这样变量可以直接赋值为null:

    DateTime? myDateTime; // 初始值就是null
    // 后续可以正常赋值为DateTime对象
    myDateTime = DateTime.now();
    // 也能重新设为null
    myDateTime = null;
    

    使用时记得做空检查,比如用if (myDateTime != null)或者空断言myDateTime!(确保非空时使用)。

  • 用默认时间值替代null
    如果不想用可空类型,可以定义一个代表"未设置"的默认时间,比如纪元起始时间DateTime(0):

    DateTime myDateTime = DateTime(0);
    // 使用时判断是否为默认值
    if (myDateTime == DateTime(0)) {
      // 处理未设置的逻辑
    } else {
      // 处理正常时间逻辑
    }
    

    也可以根据业务需求自定义一个特殊时间,比如DateTime(1970, 1, 1, 0, 0, 0)。

  • 使用Optional类(不推荐,已被可空类型替代)
    早期Dart没有空安全时常用Optional类包装,但现在官方更推荐可空类型,仅作参考:

    import 'dart:core';
    
    Optional<DateTime> optionalDateTime = Optional.empty();
    // 赋值时用of方法
    optionalDateTime = Optional.of(DateTime.now());
    // 判断是否有值
    if (optionalDateTime.isPresent) {
      DateTime value = optionalDateTime.value;
    }
    

内容的提问来源于stack exchange,提问作者barış erkuş

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:55:24