pub package analyze

iso8601_offset

Features

Provide a string containing offset information that is not processed by DateTime.toIso8601String().

Usage

import 'package:iso8601_offset/iso8601_offset.dart';

// When running on a terminal at JST(+09:00).
// 2021-11-25 03:00:00 UTC time, 2021-11-25 12:00:00 terminal time
final dateTime = DateTime(2021, 11, 25, 12, 0, 0);

print(dateTime.toIso8601String()); // 2021-11-25T12:00:00.000
print(dateTime.toIso8601UtcString()); // 2021-11-25T03:00:00.000Z
print(dateTime.toIso8601OffsetString()); // 2021-11-25T12:00:00.000+09:00

If you want to encode/decode JSON considering offset, please use @DateTimeConverter and @DateTimeOrNullConverter.

import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:iso8601_offset/iso8601_offset.dart';

part 'sample_json.freezed.dart';
part 'sample_json.g.dart';

@freezed
abstract class SampleJson with _$SampleJson {
  const factory SampleJson({
    @DateTimeConverter() required DateTime dateTime,
    @DateTimeOrNullConverter() required DateTime? dateTimeNull,
  }) = _SampleJson;

  factory SampleJson.fromJson(Map<String, dynamic> json) =>
      _$SampleJsonFromJson(json);
}

See example for a runnable version.

Libraries

iso8601_offset