首页 > 解决方案 > 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

标签: datetimeflutterdart

解决方案


您可以使用 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);
}

推荐阅读