在 Dart/Flutter 中将日期时间与时区转换

问题描述 投票:0回答:1

我只需要以类似的格式将 DateTime 获取到 API,例如“Tue Oct 15 2024 00:00:00 GMT+0800(新加坡标准时间)”。我使用 timezone/timezone.dart 和 timezone/data/latest.dart 包使用下面的代码,但没有成功。

  final currentDateTime = tz.TZDateTime.from(
      tz.TZDateTime.now(tz.local).copyWith(
        hour: 0,
        minute: 0,
        second: 0,
        millisecond: 0,
      ),
      tz.local,
    );
flutter dart
1个回答
0
投票

使用 intl 如下:

DateTime date = DateTime.now().toLocal(); // Get the current local date and time
  
  String timeZoneOffset = _formatTimeZoneOffset(date.timeZoneOffset);
  String formattedDate = DateFormat('EEE MMM d yyyy HH:mm:ss').format(date) + ' GMT$timeZoneOffset';

//获取formatTimeZoneOffset的辅助函数

String _formatTimeZoneOffset(Duration offset) {
  final hours = offset.inHours.abs().toString().padLeft(2, '0');
  final minutes = (offset.inMinutes.abs() % 60).toString().padLeft(2, '0');
  final sign = offset.isNegative ? '-' : '+';
  return '$sign$hours$minutes';
}
© www.soinside.com 2019 - 2024. All rights reserved.