You need to enable JavaScript to run this app. Flutter中如何将dd-MM-yyyy HH:mm格式的字符串日期转换为时间戳
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何将dd-MM-yyyy HH:mm格式的字符串日期转换为时间戳

Flutter自定义格式字符串转毫秒级时间戳实现

前置说明

Dart内置的DateTime.parse仅支持ISO 8601标准格式的字符串解析,针对你使用的dd-MM-yyyy HH:mm自定义格式(示例字符串为var stringDate = '27-04-2021 19:45'),直接使用内置方法会触发格式解析异常,需要借助格式化工具完成转换。

推荐实现方案

使用官方维护的intl包完成格式匹配与解析,步骤如下:

  • 在项目pubspec.yaml的依赖段添加intl库,执行flutter pub get拉取依赖
  • 导入格式化工具:import 'package:intl/intl.dart';
  • 按照字符串的实际格式初始化DateFormat实例,注意格式占位符要和字段一一对应
  • 解析字符串得到DateTime实例后,直接读取其millisecondsSinceEpoch属性即可拿到目标毫秒时间戳

完整示例代码

import 'package:intl/intl.dart';

void getTimestamp() {
  var stringDate = '27-04-2021 19:45'; // 格式:dd-MM-yyyy HH:mm
  
  // 匹配字符串格式初始化格式化器
  DateFormat customFormat = DateFormat('dd-MM-yyyy HH:mm');
  
  // 解析为DateTime对象
  DateTime dateTime = customFormat.parse(stringDate);
  
  // 获取毫秒级时间戳
  int msTimestamp = dateTime.millisecondsSinceEpoch;
}

关键注意事项

  • 格式占位符的大小写严格区分:大写MM代表月份,小写mm代表分钟,混淆占位符会导致解析结果完全错误
  • parse方法默认按照设备本地时区解析时间字符串,如果需要按UTC时区解析,可替换为parseUTC方法
  • 如需不引入第三方包实现,可通过手动拆分字符串字段构造DateTime实例,但该方式容错性差、维护成本高,不推荐生产环境使用

    手动实现参考:

    void manualParse() {
      var stringDate = '27-04-2021 19:45';
      final dateSeg = stringDate.split(' ')[0].split('-');
      final timeSeg = stringDate.split(' ')[1].split(':');
      final dateTime = DateTime(
        int.parse(dateSeg[2]), // 年
        int.parse(dateSeg[1]), // 月
        int.parse(dateSeg[0]), // 日
        int.parse(timeSeg[0]), // 时
        int.parse(timeSeg[1]), // 分
      );
      final timestamp = dateTime.millisecondsSinceEpoch;
    }
    

内容的提问来源于stack exchange,提问作者joisberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 10:45:03