flutter如何转换时间戳

在Flutter中如何将时间戳转换为可读的日期时间格式?例如,我有一个时间戳1651234567,想把它转换成"2022-04-29 12:16:07"这样的格式。使用Dart的DateTime类时具体应该怎么操作?是否需要注意时区问题?求代码示例。

2 回复

使用 DateTime.fromMillisecondsSinceEpoch(timestamp) 将时间戳转换为 DateTime 对象。例如:DateTime date = DateTime.fromMillisecondsSinceEpoch(1640995200000);

更多关于flutter如何转换时间戳的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中转换时间戳可以使用 DateTime 类。以下是几种常见方法:

1. 时间戳转DateTime

// 毫秒时间戳转DateTime
int timestamp = 1633046400000;
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(timestamp);

// 秒时间戳转DateTime
int secondsTimestamp = 1633046400;
DateTime dateTime2 = DateTime.fromMillisecondsSinceEpoch(secondsTimestamp * 1000);

2. DateTime转时间戳

DateTime now = DateTime.now();

// 转毫秒时间戳
int milliseconds = now.millisecondsSinceEpoch;

// 转秒时间戳
int seconds = now.millisecondsSinceEpoch ~/ 1000;

3. 格式化时间显示

使用 intl 包进行格式化:

# pubspec.yaml 添加依赖
dependencies:
  intl: ^0.18.1
import 'package:intl/intl.dart';

String formatTime(int timestamp) {
  var format = DateFormat('yyyy-MM-dd HH:mm:ss');
  return format.format(DateTime.fromMillisecondsSinceEpoch(timestamp));
}

// 使用示例
print(formatTime(1633046400000)); // 输出:2021-10-01 00:00:00

4. 其他常用格式化

DateFormat('yyyy/MM/dd').format(dateTime);    // 2021/10/01
DateFormat('HH:mm').format(dateTime);         // 08:30
DateFormat('EEE, MMM d').format(dateTime);    // Fri, Oct 1

注意事项:

  • 注意时间戳单位(毫秒/秒)
  • 考虑时区问题,DateTime默认使用本地时区
  • 使用 toUtc() 可转换为UTC时间

这些方法能满足大部分时间戳转换需求。

回到顶部