在flatter中解析JSON日期

在flatter中解析JSON日期,json,datetime,parsing,flutter,Json,Datetime,Parsing,Flutter,我应该在颤振应用程序中使用的API响应包含JSON格式的日期:/date(1559985189000+0300)/ 解析时,我有以下异常: FormatException(FormatException:无效的日期格式 /日期(1559985189000+0300)/) 我使用此代码解析:date:DateTime.parse(json[“date”]) 日期字符串对我来说似乎是unix时间戳 在flatter中是否有一种内置的方法将这个日期字符串解析为DateTime,或者我应该实现它 非常感

我应该在颤振应用程序中使用的API响应包含JSON格式的日期:/date(1559985189000+0300)/

解析时,我有以下异常: FormatException(FormatException:无效的日期格式 /日期(1559985189000+0300)/)

我使用此代码解析:
date:DateTime.parse(json[“date”])

日期字符串对我来说似乎是unix时间戳

在flatter中是否有一种内置的方法将这个日期字符串解析为DateTime,或者我应该实现它


非常感谢

你必须实施它;你还需要做一些实验,因为你还没有说你的服务器到底提供了什么。另外值得注意的是Dart的日期只支持两个时区:UTC或本地时间。(时区
软件包提供整个奥尔森数据库,用于其他时区的操作。)

根据问题中的数字进行猜测,当您提问时,让我们假设日期是UTC,但服务器是UTC+3(例如希腊雅典)

首先解析出相关位:

  var raw = '/Date(1559985189000+0300)/';

  var numeric = raw.split('(')[1].split(')')[0];
  var negative = numeric.contains('-');
  var parts = numeric.split(negative ? '-' : '+');
  var millis = int.parse(parts[0]);
这将在手机的TZ中显示一个
DateTime

  var local = DateTime.fromMillisecondsSinceEpoch(millis);
这将获得UTC时间:

  var utc = DateTime.fromMillisecondsSinceEpoch(millis, isUtc: true);
这将获得雅典和UTC之间的偏移量,但可能没有用处:(请注意,即使我们可以推断您的服务器位于雅典(或类似的TZ),如果不使用时区软件包,我们也无法获得雅典时区的日期-Dart只支持UTC或手机的时间,可能位于苏黎世)


非常感谢您的详细解释!
  final multiplier = negative ? -1 : 1;
  var offset = Duration(
    hours: int.parse(parts[1].substring(0, 2)) * multiplier,
    minutes: int.parse(parts[1].substring(2)) * multiplier,
  );