Я пытаюсь отобразить текущее значение DateTime
в Text
виджете после нажатия кнопки. Следующее работает, но я бы хотел изменить формат.
Текущий подход
DateTime now = DateTime.now();
currentTime = new DateTime(now.year, now.month, now.day, now.hour, now.minute);
Text('$currentTime'),
Результат
YYYY-MM-JJ HH-MM:00.000
Вопрос
Как я могу снять :00.000
деталь?
intl: 0.15.7
зависимость к вашемуpubspec.yaml
файлу. Последнюю версию библиотеки можно найти здесь .DateFormat.yMd(myLocale.languageCode).format(now)
где вы получаете текущий языковой стандарт устройства, например:Locale myLocale = Localizations.localeOf(context)
Добавьте
intl
пакет в свойpubspec.yaml
файл.import 'package:intl/intl.dart'; DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
Преобразование объекта DateTime в строку
String string = dateFormat.format(DateTime.now());
Преобразование строки в объект DateTime
DateTime dateTime = dateFormat.parse("2019-07-19 8:40:23");
источник
При таком подходе нет необходимости импортировать какую-либо библиотеку.
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()}";
источник
Попробуйте этот пакет, Jiffy , он также работает поверх Intl , но упрощает использование синтаксиса momentjs . Увидеть ниже
import 'package:jiffy/jiffy.dart'; var now = Jiffy().format("yyyy-MM-dd HH:mm:ss");
Вы также можете сделать следующее
var a = Jiffy().yMMMMd; // October 18, 2019
И вы также можете передать свой объект DateTime, строку и массив
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
источник
есть некоторые изменения по сравнению с 0.16, вот как я это сделал,
импорт в pubspec.yaml
dependencies: flutter: sdk: flutter intl: ^0.16.1
тогда используйте
txdate= DateTime.now() DateFormat.yMMMd().format(txdate)
источник
Вот мое простое решение. Для этого не требуется никакой зависимости.
Однако дата будет в строковом формате. Если вам нужно время, измените значения подстроки
print(new DateTime.now() .toString() .substring(0,10) ); // 2020-06-10
источник
Используйте эту функцию
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); }
Выход:
08:41:AM 21-12-2019
источник
Вы также можете использовать этот синтаксис. Для ГГГГ-ММ-ДЖД ЧЧ-ММ:
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}';
источник
Используйте метод разделения строк, чтобы удалить: 00.000
var formatedTime = currentTime.toString().split(':') Text(formatedTime[0])
======= ИЛИ ИСПОЛЬЗУЙТЕ НИЖЕ код для формата ГГГГ-ММ-ДД ЧЧ: ММ: СС без использования библиотеки ====
var stringList = DateTime.now().toIso8601String().split(new RegExp(r"[T\.]")); var formatedDate = "${stringList[0]} ${stringList[1]}";
источник