Ich versuche, den aktuellen Wert DateTime
in einem Text
Widget anzuzeigen, nachdem ich auf eine Schaltfläche getippt habe. Das Folgende funktioniert, aber ich möchte das Format ändern.
Aktueller Ansatz
DateTime now = DateTime.now();
currentTime = new DateTime(now.year, now.month, now.day, now.hour, now.minute);
Text('$currentTime'),
Ergebnis
YYYY-MM-JJ HH-MM:00.000
Frage
Wie kann ich das :00.000
Teil entfernen ?
intl: 0.15.7
, Ihrerpubspec.yaml
Datei eine Abhängigkeit hinzuzufügen . Die neueste Version der Bibliothek finden Sie hier .DateFormat.yMd(myLocale.languageCode).format(now)
Hier erhalten Sie das aktuelle Gebietsschema des Geräts wie folgt:Locale myLocale = Localizations.localeOf(context)
Fügen Sie Ihrer Datei ein
intl
Paket hinzupubspec.yaml
.import 'package:intl/intl.dart'; DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
Konvertieren des DateTime-Objekts in einen String
String string = dateFormat.format(DateTime.now());
Konvertieren eines Strings in ein DateTime-Objekt
DateTime dateTime = dateFormat.parse("2019-07-19 8:40:23");
quelle
Bei diesem Ansatz muss keine Bibliothek importiert werden.
DateTime now = DateTime.now(); String convertedDateTime = "${now.year.toString()}-${now.month.toString().padLeft(2,'0')}-${now.day.toString().padLeft(2,'0')} ${now.hour.toString()}-${now.minute.toString()}";
quelle
Probieren Sie dieses Paket aus, Jiffy . Es läuft ebenfalls über Intl , erleichtert jedoch die Verwendung der momentjs- Syntax. Siehe unten
import 'package:jiffy/jiffy.dart'; var now = Jiffy().format("yyyy-MM-dd HH:mm:ss");
Sie können auch Folgendes tun
var a = Jiffy().yMMMMd; // October 18, 2019
Sie können auch Ihr DateTime-Objekt, eine Zeichenfolge und ein Array übergeben
var a = Jiffy(DateTime(2019, 10, 18)).yMMMMd; // October 18, 2019 var a = Jiffy("2019-10-18").yMMMMd; // October 18, 2019 var a = Jiffy([2019, 10, 18]).yMMMMd; // October 18, 2019
quelle
Es gibt einige Änderungen seit dem 0.16, also hier, wie ich es gemacht habe,
Import in die pubspec.yaml
dependencies: flutter: sdk: flutter intl: ^0.16.1
dann benutze
txdate= DateTime.now() DateFormat.yMMMd().format(txdate)
quelle
Hier ist meine einfache Lösung. Das erfordert keine Abhängigkeit.
Das Datum wird jedoch im Zeichenfolgenformat angezeigt. Wenn Sie die Zeit möchten, ändern Sie die Teilzeichenfolgenwerte
print(new DateTime.now() .toString() .substring(0,10) ); // 2020-06-10
quelle
Verwenden Sie diese Funktion
todayDate() { var now = new DateTime.now(); var formatter = new DateFormat('dd-MM-yyyy'); String formattedTime = DateFormat('kk:mm:a').format(now); String formattedDate = formatter.format(now); print(formattedTime); print(formattedDate); }
Ausgabe:
08:41:AM 21-12-2019
quelle
Sie können diese Syntax auch verwenden. Für JJJJ-MM-JJ HH-MM:
var now = DateTime.now(); var month = now.month.toString().padLeft(2, '0'); var day = now.day.toString().padLeft(2, '0'); var text = '${now.year}-$month-$day ${now.hour}:${now.minute}';
quelle
Verwenden Sie die String-Split-Methode, um Folgendes zu entfernen: 00.000
var formatedTime = currentTime.toString().split(':') Text(formatedTime[0])
======= ODER VERWENDEN SIE UNTEN Code für JJJJ-MM-TT HH: MM: SS-Format ohne Verwendung der Bibliothek ====
var stringList = DateTime.now().toIso8601String().split(new RegExp(r"[T\.]")); var formatedDate = "${stringList[0]} ${stringList[1]}";
quelle