我是扑朔迷离的新手,我的rest api使用当前时区为Europe / london。我不知道当前时区的波动。 stackoverflow中有一个关于此主题的问题,但没有用户给出答案。
任何人都可以引导我,如何使用飞镖获取当前时区的抖动。
答案 0 :(得分:8)
DateTime
是默认类,提供解决时区相关问题所需的使用时区和时间偏移。
DateTime dateTime = DateTime.now();
print(dateTime.timeZoneName);
print(dateTime.timeZoneOffset);
输出:
1.印度
timeZoneName: IST
timeZoneOffset: 5:30:00.000000
2.美国/洛杉矶
timeZoneName: PST
timeZoneOffset: -8:00:00.000000
答案 1 :(得分:1)
//// 时区名称。 /// /// 该值由
操作系统,可以是 /// 缩写或全名。
/// /// 在浏览器或类 Unix 系统上通常返回
缩写,/// 如“CET”或“CEST”。在 Windows 上返回
全名,例如///“太平洋标准时间”。
external String get timeZoneName;
/// 时区偏移量, /// 是两者之间的差值
当地时间和 UTC。 /// /// 时区的偏移量为正
UTC 以东。 /// /// 注意,JavaScript、Python 和 C 返回
UTC 和 /// 本地时间之间的差异。 Java、C# 和 Ruby
返回本地时间和 /// UTC 之间的差异。
external Duration get timeZoneOffset;
DateTime.now().timeZoneName
如果时间实例是 UTC。
timeInstance.toLocal().timeZoneName
此外,
<块引用>//// DateTime 类不提供国际化。 /// 到 国际化你的代码,使用 /// intl 包。
或
要以 Europe/Moscow
格式获取时区:
来自 here:使用 flutter_native_timezone
final String currentTimeZone = await FlutterNativeTimezone.getLocalTimezone();
print(currentTimeZone); // Europe/Moscow
答案 2 :(得分:0)
https://pub.dartlang.org/packages/timezone和https://docs.flutter.io/flutter/dart-core/DateTime/timeZoneOffset.html可能适合您。
使Flutter可以使用本机功能。答案 3 :(得分:0)
答案 4 :(得分:0)
var date = DateTime.now().toIso8601String().split(".")[0];
if(DateTime.now().timeZoneOffset.isNegative){
date += "-";
} else {
date += "+";
}
final timeZoneSplit = DateTime.now().timeZoneOffset.toString().split(":");
var hour = int.parse(timeZoneSplit[0]);
if(hour < 10){
date += "0${timeZoneSplit[0]}";
}
date += ":" + timeZoneSplit[1];
print(date);
这会起作用,并且会给出类似 2021-07-15T19:28:25+05:30
的结果。这里 5:30 是 IST。哪个应该不错。
答案 5 :(得分:-1)
也许对某人有用,我正在使用:
String formatDateToStringWithTimeZone(DateTime date) {
var dur = date.timeZoneOffset;
if (dur.isNegative)
return "${DateFormat("y-MM-ddTHH:mm:ss").format(date)}-${dur.inHours.toString().padLeft(2, '0')}:${(dur.inMinutes - (dur.inHours * 60)).toString().padLeft(2, '0')}";
else
return "${DateFormat("y-MM-ddTHH:mm:ss").format(date)}+${dur.inHours.toString().padLeft(2, '0')}:${(dur.inMinutes - (dur.inHours * 60)).toString().padLeft(2, '0')}";
}