Дата и время десериализации часового пояса - PullRequest
0 голосов
/ 13 сентября 2018

Я разработал Rest API для своего приложения.Он отправляет приложению даты в следующем формате 2018-09-07T17:29:12+02:00, где, как мне кажется, +2: 00 представляет мой часовой пояс как часть одного объекта.

В моем приложении Flutter после десериализации полученного объекта он вычитаетдва часа до фактического полученного объекта DateTime.

Класс, который я пытаюсь десериализовать, определяется следующим образом:

import 'package:json_annotation/json_annotation.dart';

part 'evento.g.dart';

@JsonSerializable(nullable: false)
class Evento {
  final int id;
    final String nombre;
    final String discoteca;
    final int precio_desde;
    final int edad_minima;
    final DateTime fecha_inicio;
    final DateTime fecha_fin;
    final DateTime fecha_fin_acceso;
    final String cartel;
  final bool incluyeCopa;
    Evento(this.id, this.nombre, this.discoteca, this.precio_desde, this.edad_minima, this.fecha_inicio, this.fecha_fin, this.fecha_fin_acceso, this.cartel, this.incluyeCopa, this.num_tipos);
  factory Evento.fromJson(Map<String, dynamic> json) => _$EventoFromJson(json);
  Map<String, dynamic> toJson() => _$EventoToJson(this);
} 

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

DateTime может представлять только местное время и время UTC.

Он поддерживает смещение часового пояса для разбора, но нормализует его к UTC

print(DateTime.parse('2018-09-07T17:29:12+02:00').isUtc);

отпечатков true.

Тогда вы можете конвертировать только между местным и UTC временем, используя toLocal() или toUtc()

0 голосов
/ 13 сентября 2018

Попробуйте вызвать метод .toLocal() в тот день, когда вы его десериализовали.

Это то, что говорят документы

Используйте методы toLocal и toUtc, чтобы получить эквивалентную дату/ значение времени, указанное в другом часовом поясе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...