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

Flutter/Dart:如何将"01 January 2020"格式日期转为纪元毫秒数?

更优的日期转纪元毫秒数方案(针对"01 January 2020"格式)

你当前手动维护月份映射表、截取字符串的方式不仅容易出错(比如你的映射表漏掉了April的对应关系),还不够灵活。Dart里可以借助intl包的DateFormat类,用更简洁可靠的方式实现需求:

步骤1:添加依赖

在pubspec.yaml中引入intl包:

dependencies:
  intl: ^0.18.1 # 可使用最新版本

步骤2:编写转换代码

import 'package:intl/intl.dart';

void main() {
  String dateStr = "01 January 2020";
  // 匹配"日 月份全称 年"的格式,指定英文 locale 确保月份解析正确
  DateFormat dateFormatter = DateFormat("dd MMMM yyyy", "en_US");
  DateTime parsedDate = dateFormatter.parse(dateStr);
  // 获取纪元以来的毫秒数
  int millis = parsedDate.millisecondsSinceEpoch;
  
  print(millis); // 输出:1577836800000
}

为什么这是更优方案

  • 无需手动维护月份映射,彻底避免遗漏、拼写错误这类低级问题
  • 内置方法自动处理各种边界场景(比如日期无前置零、不同长度的月份名称)
  • 代码可读性更强,后续如果要支持其他日期格式或语言,只需调整DateFormat的参数即可

原方案的潜在问题

你的代码存在几个隐患:

  1. 月份映射表缺失了April(对应Apr)的条目,遇到"01 April 2020"这类日期会直接报错
  2. 依赖固定字符串位置截取,若输入格式稍有变化(比如日期写成"1 January 2020"),截取逻辑就会失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:55:15