DateTime.toIso8601String în Dart

Scrie data ca text în formatul standard ISO 8601 (2026-10-19T14:30:00.000), bun pentru JSON și fișiere.

Sintaxă
String toIso8601String()

Ce face DateTime.toIso8601String

toIso8601String() returnează data în formatul internațional AAAA-LL-ZZTHH:MM:SS.mmm. Pentru datele UTC adaugă Z la final. Dacă data are microsecunde, acestea apar și ele.

Diferența față de toString(): toString() pune un spațiu între dată și oră și este gândit pentru oameni, iar toIso8601String() pune T, cum cer standardele. Este formatul de folosit în JSON, API-uri și fișiere. DateTime.parse îl citește înapoi fără pierderi.

O dată locală este scrisă fără decalaj de fus orar, deci cine o citește nu știe din ce fus provine. Pentru date trimise altor sisteme, transformă-le întâi cu toUtc().

Ce returnează

Un String.

Exemple

Exemplul 1: ISO 8601 față de toString

void main() {
  var local = DateTime(2026, 10, 19, 14, 30);
  var utc = DateTime.utc(2026, 10, 19, 11, 30, 5, 250);
  print(local.toString());
  print(local.toIso8601String());
  print(utc.toIso8601String());
  print(DateTime.utc(2026, 1, 1, 0, 0, 0, 0, 7).toIso8601String());
  var text = utc.toIso8601String();
  print(DateTime.parse(text) == utc);
}

Rezultat

2026-10-19 14:30:00.000
2026-10-19T14:30:00.000
2026-10-19T11:30:05.250Z
2026-01-01T00:00:00.000007Z
true

Exemplul 2: Salvarea unei programări în JSON

import 'dart:convert';

void main() {
  var programare = {
    'pacient': 'Ana Popescu',
    'medic': 'Dr. Ionescu',
    'la': DateTime.utc(2026, 11, 3, 8, 30).toIso8601String(),
  };
  var json = jsonEncode(programare);
  print(json);
  var citit = jsonDecode(json) as Map<String, dynamic>;
  var data = DateTime.parse(citit['la'] as String);
  print('${citit['pacient']}: ${data.day}.${data.month}, ora ${data.hour}:${data.minute} UTC');
}

Rezultat

{"pacient":"Ana Popescu","medic":"Dr. Ionescu","la":"2026-11-03T08:30:00.000Z"}
Ana Popescu: 3.11, ora 8:30 UTC

Greșeli frecvente

  • Dai un DateTime direct lui jsonEncode: aruncă eroare, pentru că JSON nu are tip de dată. Transformă-l cu toIso8601String().

Comenzi înrudite

  • DateTime.parse: Transformă un text în format ISO 8601 (2026-10-19 14:30) într-un DateTime; tryParse dă null la text greșit.
  • DateTime.utc: DateTime.utc creează o dată în UTC; toUtc și toLocal transformă același moment între UTC și ora locală.
  • jsonEncode: Transformă hărți, liste, texte, numere, bool și null într-un text JSON; alte obiecte trebuie să aibă toJson().