Dart中的日期格式,其中包括GMT

问题描述

如何在Dart中将当前时间转换为GMT / UTC时间,类似于javascript方法new Date().toUTCString()

2011年11月1日,星期二,格林尼治标准时间

我尝试了以下几种格式化程序,但是没有用

//var f = DateFormat('E,d MMM yyyy HH:mm:ss z');
var f = DateFormat('E,d MMM yyyy HH:mm:ss'); 
    var date = f.format(DateTime.Now());

解决方法

var f = DateFormat('EEE,d MMM yyyy HH:mm:ss'); 
var date = f.format(DateTime.now());

此输出日期的格式为星期二,2011年11月1日19:06:35,不含格林尼治标准时间

,

将当前时间转换为UTC并将" GMT"附加到字符串。

import 'package:intl/intl.dart';

void main(List<String> arguments) async {
  var f = DateFormat('E,d MMM yyyy HH:mm:ss');
  var date = f.format(DateTime.now().toUtc()) + " GMT";
  print(date);
}


使用任意时区(不仅仅是GMT / UTC)

尽管在文档中,但是您无法使用DateTime创建具有任意时区的字符串,因为缺少时区支持/实现,并且自2015年以来就是GitHub问题。例如,您无法显示其他时区在字符串中使用,因为在格式字符串中使用z不起作用:呼叫者将获得UnimplementedError。请参阅3个相关的GitHub问题:onetwothree

UnimplementedError
#0      _DateFormatPatternField.formatTimeZone (package:intl/src/intl/date_format_field.dart:640:5)
#1      _DateFormatPatternField.formatField (package:intl/src/intl/date_format_field.dart:381:16)
#2      _DateFormatPatternField.format (package:intl/src/intl/date_format_field.dart:244:12)
#3      DateFormat.format (package:intl/src/intl/date_format.dart:276:26)
#4      main (file:///Users/benbutterworth/datetime/bin/datetime.dart:11:16)
<asynchronous suspension>
#5      _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299:32)
#6      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
,

最后我发现了如下的解决方法

 String getUTCDate() {
    try {
      var f = DateFormat('E,d MMM yyyy HH:mm:ss');
      var now = DateTime.now().toUtc();
      return f.format(now) + ' GMT';
    } catch (e) {
      print('Error ******' + e.toString());
      throw e;
    }
  }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...