dart - 如何在特定时区创建 DateTime 实例?
问题描述
我正在调用一个遗留服务,它以字符串格式返回所有时间,假设时区是 EST。如何创建 DateTime 实例并指定时区为 EST?当我向用户显示时间时,我将转换为他们的设备时区。
解决方案
我为此写了一个包。它称为 Instant,它可以获取全球任何给定区域中的最新 DateTime。详细看一下https://aditya-kishore.gitbook.io/instant/
在时区中获取 DateTime 的基本用法相当简单。
注意:我在下面假设您的旧服务在 24 小时内提供格式为 HH:MM 的字符串,并且它不提供日期。如果以下任何一项不正确,请让我知道,我将更改代码示例。
List<int> _hourmin (String parse) {
List<int> timeinint = [];
if (parse.length == 5) {
//if parse is something like 10:00
timeinint.add(int.parse(parse.substring(0,2))); //Add hours (10)
timeinint.add(int.parse(parse.substring(3,5))); //Add minutes (0)
} //hours >= 10
if (parse.length == 4) {
//if parse is something like 4:06
timeinint.add(int.parse(parse.substring(0,1))); //Add hours (4)
timeinint.add(int.parse(parse.substring(2,4))); //Add minutes (6)
} //hours < 10
return timeinint;
}
DateTime utcDateTimeFromZone(
{@required String zone,
int year = 0,
int month = 0,
int day = 0,
int hour = 0,
int minute = 0,
int second = 0,
int millisecond = 0,
int microsecond = 0}) {
hour = (hour - timeZoneOffsets[zone].truncate()) % 24; //Convert to UTC from timezone
if (hour<0) {
hour = 24 + hour;
}
minute = (minute - ((timeZoneOffsets[zone]%1)*60).round()) % 60;
if (minute<0) {
minute = 60 + minute;
}
//Convert to UTC from timezone
DateTime inUTC = DateTime.utc(year, month, day, hour, minute, second, millisecond, microsecond); //Initialize in UTC time
return inUTC;
}
//We get an array containing the hours minutes
List<int> time = _hourmin("4:25"); //put your API call as the param here
//This is what you need
DateTime finished = utcDateTimeFromZone(zone: "EST", hour: time[0], minute: time[1]);
print(formatTime(time: finished.toLocal())); //1:25 for me, because I'm PST, but this works with any local timezone
希望清除它!
推荐阅读
- javascript - 在 JavaScript 中更改数组中的值
- python-3.x - Apache Beam Jupyter Notebook:ImportError:无法从“google.cloud”(未知位置)导入名称“storage”
- android - 重构活动仅在提供的数据上有所不同
- python - googleapi python如何获取/刷新访问令牌
- reactjs - 有没有类似electron-vue 的react 插件?
- javascript - 我正在使用 html 并有两个按钮。我希望这些按钮具有不同的 typeWriter() 函数输出
- angular - 我希望 Angular 访问 URL 并获取 STL 文件,该文件可用于进一步处理
- android - 如何从广播接收器类调用片段类的处理程序来更新主线程?
- python - 为什么`for _ in 1,1`会迭代两次?
- c - 在 C 中传递指向数组的指针的正确方法是什么?