如何解决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问题:one,two和three。
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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。