Estoy tratando de mostrar la corriente DateTime
en un Text
widget después de tocar un botón. Lo siguiente funciona, pero me gustaría cambiar el formato.
Enfoque actual
DateTime now = DateTime.now();
currentTime = new DateTime(now.year, now.month, now.day, now.hour, now.minute);
Text('$currentTime'),
Resultado
YYYY-MM-JJ HH-MM:00.000
Pregunta
¿Cómo puedo quitar la :00.000
pieza?
intl: 0.15.7
dependencia a supubspec.yaml
archivo. La última versión de la biblioteca se puede encontrar aquí .DateFormat.yMd(myLocale.languageCode).format(now)
donde obtiene la configuración regional actual del dispositivo como esta:Locale myLocale = Localizations.localeOf(context)
Agregue el
intl
paquete a supubspec.yaml
archivo.import 'package:intl/intl.dart'; DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
Conversión del objeto DateTime en String
String string = dateFormat.format(DateTime.now());
Conversión de cadena en objeto DateTime
DateTime dateTime = dateFormat.parse("2019-07-19 8:40:23");
fuente
Con este enfoque, no es necesario importar ninguna biblioteca.
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()}";
fuente
Pruebe este paquete, Jiffy , también se ejecuta sobre Intl , pero facilita el uso de la sintaxis de momentjs . Vea abajo
import 'package:jiffy/jiffy.dart'; var now = Jiffy().format("yyyy-MM-dd HH:mm:ss");
También puede hacer lo siguiente
var a = Jiffy().yMMMMd; // October 18, 2019
Y también puede pasar su objeto DateTime, una cadena y una matriz
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
fuente
hay algunos cambios desde el 0.16 así que aquí cómo lo hice,
importar en pubspec.yaml
dependencies: flutter: sdk: flutter intl: ^0.16.1
luego usa
txdate= DateTime.now() DateFormat.yMMMd().format(txdate)
fuente
Esta es mi sencilla solución. Eso no requiere ninguna dependencia.
Sin embargo, la fecha estará en formato de cadena. Si quieres la hora, cambia los valores de la subcadena
print(new DateTime.now() .toString() .substring(0,10) ); // 2020-06-10
fuente
Usa esta función
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); }
Salida:
08:41:AM 21-12-2019
fuente
También puede utilizar esta sintaxis. Para AAAA-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}';
fuente
Utilice el método String split para eliminar: 00.000
var formatedTime = currentTime.toString().split(':') Text(formatedTime[0])
======= O USE EL código ABAJO para el formato AAAA-MM-DD HH: MM: SS sin usar la biblioteca ====
var stringList = DateTime.now().toIso8601String().split(new RegExp(r"[T\.]")); var formatedDate = "${stringList[0]} ${stringList[1]}";
fuente