datetime - Flutter 日期时间解析
问题描述
我想将偏移量 GMT +05:30 添加到时间,但我不知道该怎么做
String offset = data ['utc_offset'].substring(1,);
ntime =ntime.add(Duration(hours:int.parse(offset)));
由于在 05:30 中间有“ : ”,我无法添加确切的值..
PS:我正在使用http://worldtimeapi.org JSON API
解决方案
您可以使用 RegExp 解析偏移时间。我在示例中使用了命名组,因为我发现更容易理解正则表达式的每个部分提取的内容:
import 'dart:io';
void main() {
const offset = '+01:00';
final regexp =
RegExp(r'^(?<plusMinus>[+-]?)(?<hours>[\d]+):(?<minutes>[\d]+)');
final match = regexp.firstMatch(offset);
print(match.namedGroup('plusMinus'));
print(match.namedGroup('hours'));
print(match.namedGroup('minutes'));
final offsetDuration = Duration(
hours: int.parse(match.namedGroup('hours')),
minutes: int.parse(match.namedGroup('minutes')));
DateTime time;
if (match.namedGroup('plusMinus') == '+') {
time = DateTime.now().add(offsetDuration);
} else if (match.namedGroup('plusMinus') == '-') {
time = DateTime.now().subtract(offsetDuration);
} else {
time = DateTime.now();
}
print(time);
}