Как форматировать DateTime в Flutter

Я пытался отобразить текущий 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

Ответ 1

Использовать DateFormat:

import 'package:intl/intl.dart';

DateTime now = DateTime.now();
String formattedDate = DateFormat('yyyy-MM-dd – kk:mm').format(now);

Ответ 2

Добавьте 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");

Ответ 3

Попробуйте этот пакет, Jiffy, он также работает поверх Intl, но упрощает использование синтаксиса momentjs. Смотрите ниже

var now = Jiffy().format("yyyy-MM-dd HH:mm:ss");

Вы также можете сделать следующее

var a = Jiffy().yMMMMd; // October 18, 2019

Ответ 4

Вы можете использовать методы parse flutter для форматирования строк, не переписывая их каждый раз. Например, посмотрите месяц/день/год, это метод:

DateFormat().add_yMd().format("your date");