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

Dart/Flutter中如何提取MySQL时间戳中的日期与时间

时间戳格式转换实现方案

针对你需要将ISO格式的时间戳2021-08-11T11:38:09.000Z转换为2021-08-11 11:38格式的需求,有两种常用实现方式:

方案1:正则替换(匹配你的原有实现思路)

你可以通过替换冗余字符或者捕获有效部分得到目标格式,Dart实现代码如下:

// 方式1:两步替换,逻辑更易懂
final String? shortime = timestamp?.replaceAll(RegExp(r':\d{2}\.\d{3}Z'), '')?.replaceAll('T', ' ') ?? '';

// 方式2:单次正则映射替换
final String? shortime = timestamp?.replaceAllMapped(
  RegExp(r'(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}):.*'),
  (match) => '${match.group(1)} ${match.group(2)}',
) ?? '';

方案2:时间类解析转换(更推荐,容错性更高)

正则方案对输入格式的要求很严格,一旦输入格式有微小变动就会失效,更稳妥的方式是先将字符串解析为DateTime对象,再格式化输出:

import 'package:intl/intl.dart';

DateTime? dateTime = timestamp != null ? DateTime.tryParse(timestamp!) : null;
final String shortime = dateTime != null ? DateFormat('yyyy-MM-dd HH:mm').format(dateTime) : '';

该方案会自动兼容ISO标准时间的各类格式变体,如果你需要转换为本地时区展示,只需要在format前调用toLocal()方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 16:12:01