2016-03-23 12 views
1

Ich beginne, Intl-Paket in meinem Dart-Projekt zu verwenden. Nach dem Start dieses Paket zu verwenden, verwende ich diesen Code:intl Paket und Datumsformatierung seltsames Verhalten

DateTime now = new DateTime.now(); 
    var formatter = new DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
    String nowFormatted = formatter.format(now); 

Und es funktioniert richtig. Nachdem ich intl verwende ich diese Nachricht in log erhalten:

Uncaught LocaleDataException: Locale data has not been initialized, call initializeDateFormatting(<locale>). 

Ich kann nicht verstehen, warum ich locale in diesem Codefragment

+0

es in date_format.dart enthalten ist. im Header der Datei sehe ich einen Teil von intl; –

+0

@ThierryTemplier der Dart 'intl' ist nicht verwandt mit dem JS' intl'. –

+0

Ihr Code druckt '2016-03-23T10: 39: 03Z' für mich. Welche Zeile verursacht Ihre Ausnahme? Welche Version von 'intl' ist in Ihrer' pubspec.lock' Datei aufgeführt? –

Antwort

0

i gelöst haben diese Verwendung auf diese Weise passieren sollte:

DateTime now = new DateTime.now(); 
var formatter = new DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", 'en'); 
String nowFormatted = formatter.format(now); 

Aber ich habe tho itnl Unterstützung zu konfigurieren, machen diese verwendet, um meine dart-Datei:

library translation_helper; 

import 'dart:async'; 
import 'package:intl/date_symbol_data_local.dart'; 
import '../../resources/messages_all.dart'; 


void setupLanguage(){ 
    //var germanDatesFuture = initializeDateFormatting('de_DE', null); 
    var enDatesFuture = initializeDateFormatting('en', null); 
    var germanMessagesFuture = initializeMessages('de'); 
    var englishMessagesFuture = initializeMessages('en'); 
    var italianMessagesFuture = initializeMessages('it'); 
    var polishMessagesFuture = initializeMessages('pl'); 
    Future 
     .wait([ 
    enDatesFuture, 
    germanMessagesFuture, 
    englishMessagesFuture, 
    italianMessagesFuture, 
    polishMessagesFuture 
    ]); 
} 

Bevor ich habe fehlen:

var enDatesFuture = initializeDateFormatting('en', null); 

Für weitere Informationen i verwenden:

  • dart 1.15.0
  • intl 0.12.7
+0

Interessant. Warum brauchst du das, während es ohne mich funktionierte. Welches Betriebssystem verwenden Sie? –

+0

Boring OSX letzte Version -_- –

+2

Ja, Sie müssen das Format für ein bestimmtes Gebietsschema initialisieren, bevor Sie es verwenden können. In einigen Fällen sind die Daten bereits geladen, aber in anderen (am häufigsten Nachrichten, bei denen die Daten viel Speicherplatz belegen können) müssen die Daten möglicherweise geladen werden, bevor sie verwendet werden können. Normalerweise würden Sie nicht alle Nachrichten für jedes Gebietsschema initialisieren, sondern nur das für das Gebietsschema Ihres Benutzers. –