Próbuję wyświetlić prąd DateTime
w Text
widżecie po dotknięciu przycisku. Następujące działa, ale chciałbym zmienić format.
Obecne podejście
DateTime now = DateTime.now();
currentTime = new DateTime(now.year, now.month, now.day, now.hour, now.minute);
Text('$currentTime'),
Wynik
YYYY-MM-JJ HH-MM:00.000
Pytanie
Jak mogę usunąć tę :00.000
część?
intl: 0.15.7
zależności do swojegopubspec.yaml
pliku. Najnowszą wersję biblioteki można znaleźć tutaj .DateFormat.yMd(myLocale.languageCode).format(now)
gdzie uzyskujesz aktualne ustawienia regionalne urządzenia w następujący sposób:Locale myLocale = Localizations.localeOf(context)
Dodaj
intl
pakiet do swojegopubspec.yaml
pliku.import 'package:intl/intl.dart'; DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
Konwertowanie obiektu DateTime na String
String string = dateFormat.format(DateTime.now());
Konwersja String do obiektu DateTime
DateTime dateTime = dateFormat.parse("2019-07-19 8:40:23");
źródło
Przy takim podejściu nie ma potrzeby importowania żadnej biblioteki.
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()}";
Wynik
źródło
Wypróbuj ten pakiet, Jiffy , działa również na bazie Intl , ale ułatwia korzystanie ze składni momentjs . Zobacz poniżej
import 'package:jiffy/jiffy.dart'; var now = Jiffy().format("yyyy-MM-dd HH:mm:ss");
Możesz także wykonać następujące czynności
var a = Jiffy().yMMMMd; // October 18, 2019
Możesz również przekazać swój obiekt DateTime, ciąg znaków i tablicę
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
źródło
nastąpiła pewna zmiana od wersji 0.16, więc tutaj, jak to zrobiłem,
import w pliku pubspec.yaml
dependencies: flutter: sdk: flutter intl: ^0.16.1
następnie użyj
txdate= DateTime.now() DateFormat.yMMMd().format(txdate)
źródło
Oto moje proste rozwiązanie. To nie wymaga żadnej zależności.
Jednak data będzie w formacie ciągu. Jeśli chcesz ustawić czas, zmień wartości podciągów
print(new DateTime.now() .toString() .substring(0,10) ); // 2020-06-10
źródło
Użyj tej funkcji
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); }
Wynik:
08:41:AM 21-12-2019
źródło
Możesz również użyć tej składni. Dla RRRR-MM-JJ GG-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}';
źródło
Użyj metody podziału ciągów, aby usunąć: 00.000
var formatedTime = currentTime.toString().split(':') Text(formatedTime[0])
======= LUB UŻYJ PONIŻEJ kodu dla formatu RRRR-MM-DD GG: MM: SS bez korzystania z biblioteki ====
var stringList = DateTime.now().toIso8601String().split(new RegExp(r"[T\.]")); var formatedDate = "${stringList[0]} ${stringList[1]}";
źródło