flutter如何获取东八区时间戳

在Flutter开发中,如何获取当前东八区(北京时间)的时间戳?我尝试使用DateTime.now(),但获取到的是UTC时间,不知道该如何转换为东八区时间戳。希望能提供一个具体的代码实现方法。

2 回复

使用DateTime.now().toUtc().add(Duration(hours: 8)).millisecondsSinceEpoch获取东八区时间戳。

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


在Flutter中获取东八区时间戳,可以通过以下方法实现:

方法一:使用DateTime类

// 获取当前东八区时间戳(毫秒)
int getEast8Timestamp() {
  final now = DateTime.now().toUtc().add(const Duration(hours: 8));
  return now.millisecondsSinceEpoch;
}

// 获取当前东八区时间戳(秒)
int getEast8TimestampInSeconds() {
  final now = DateTime.now().toUtc().add(const Duration(hours: 8));
  return now.millisecondsSinceEpoch ~/ 1000;
}

方法二:指定时区创建DateTime

int getEast8Timestamp() {
  final now = DateTime.now().toUtc();
  return now.millisecondsSinceEpoch + 8 * 60 * 60 * 1000;
}

使用示例:

void main() {
  print('东八区时间戳(毫秒):${getEast8Timestamp()}');
  print('东八区时间戳(秒):${getEast8TimestampInSeconds()}');
}

说明:

  • 东八区比UTC时间快8小时,所以需要在UTC时间基础上加8小时
  • millisecondsSinceEpoch 返回的是毫秒时间戳
  • ~/ 1000 可将毫秒转换为秒时间戳
  • 这种方法适用于大多数需要东八区时间戳的场景
回到顶部