我试图在点击按钮后在文本小部件中显示当前的日期时间。以下是可以的,但是我想改变格式。
当前的方法
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部分?
我试图在点击按钮后在文本小部件中显示当前的日期时间。以下是可以的,但是我想改变格式。
当前的方法
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部分?
当前回答
自从0.16以来有了一些变化这是我做的,
在pubspec.yaml中导入
dependencies:
flutter:
sdk: flutter
intl: ^0.16.1
然后 使用
txdate= DateTime.now()
DateFormat.yMMMd().format(txdate)
其他回答
使用这种方法,不需要导入任何库。
DateTime now = DateTime.now();
String convertedDateTime = "${now.year.toString()}-${now.month.toString().padLeft(2,'0')}-${now.day.toString().padLeft(2,'0')} ${now.hour.toString().padLeft(2,'0')}-${now.minute.toString().padLeft(2,'0')}";
输出
2020-12-05 14:57
使用这个选项,你可以自定义:
static String formatDateTime(DateTime fecha, String formato) {
var _index = 0;
var _letra = '';
var _fecha = '';
var _auxiliar = '';
//
//Evalua todas las letras
while (_letra != '[/]') {
_letra = _index < formato.length ? formato[_index++] : '[/]';
//
//suma las letra para luego aplicarles el formato
if (_auxiliar.isEmpty || _auxiliar[0] == _letra) {
_auxiliar += _letra;
continue;
}
//
//aplica el formato de las letras acumuladas
switch (_auxiliar) {
case 'yy':
_fecha += fecha.year.toString().substring(2);
break;
case 'yyyy':
_fecha += fecha.year.toString();
break;
case 'M':
_fecha += fecha.month.toString();
break;
case 'MM':
_fecha +=
fecha.month < 10 ? '0${fecha.month}' : fecha.month.toString();
break;
case 'd':
_fecha += fecha.day.toString();
break;
case 'dd':
_fecha += fecha.day < 10 ? '0${fecha.day}' : fecha.day.toString();
break;
case 'h':
_fecha += 12 < fecha.hour
? (fecha.hour - 12).toString()
: fecha.hour.toString();
break;
case 'hh':
_fecha += fecha.hour < 10
? '0${fecha.hour}'
: 12 < fecha.hour
? (fecha.hour - 12).toString()
: fecha.hour.toString();
break;
case 'H':
_fecha += fecha.hour.toString();
break;
case 'HH':
_fecha += fecha.hour < 10 ? '0${fecha.hour}' : fecha.hour.toString();
break;
case 'm':
_fecha += fecha.minute.toString();
break;
case 'mm':
_fecha +=
fecha.minute < 10 ? '0${fecha.minute}' : fecha.minute.toString();
break;
case 's':
_fecha += fecha.second.toString();
break;
case 'ss':
_fecha +=
fecha.second < 10 ? '0${fecha.second}' : fecha.second.toString();
break;
case 't':
_fecha += fecha.hour < 12 ? 'a' : 'p';
break;
case 'tt':
_fecha += fecha.hour < 12 ? 'am' : 'pm';
break;
case 'f':
case 'ff':
case 'fff':
case 'ffff':
_fecha += fecha.millisecond.toString().substring(0, _auxiliar.length);
break;
case 'z':
if (fecha.isUtc) {
_fecha += '0';
} else {
_fecha +=
(fecha.timeZoneOffset.inMinutes / 60).truncate().toString();
}
break;
case 'zz':
if (fecha.isUtc) {
_fecha += '00';
} else {
var _horas = (fecha.timeZoneOffset.inMinutes / 60).truncate();
_fecha += (fecha.timeZoneOffset.inMinutes < 0 ? '-' : '+') +
(_horas < 10 ? '0$_horas' : _horas.toString());
}
break;
case 'zzz':
if (fecha.isUtc) {
_fecha += '00:00';
} else {
_fecha += (fecha.timeZoneOffset.inMinutes < 0 ? '-' : '+') +
formatDateTime(
DateTime.fromMillisecondsSinceEpoch(
fecha.timeZoneOffset.inMilliseconds),
'hh:mm');
}
break;
default:
_fecha += _auxiliar;
break;
}
//
//siguiente
_auxiliar = _letra;
}
//
//Fin
return _fecha;
}
使用方法如下:
print(formatDateTime(DateTime.now().toUtc(), 'dd-MM-yyyy hh:mm tt'));
print(formatDateTime(DateTime.now().toUtc(), 'dd-MM-yyyy hh:mm tt (GTM zzz)'));
// 28-07-2022 04:52:59 pm
// 28-07-2022 04:52:59 pm (GTM -6:00)
不喜欢西班牙语的人可以用谷歌翻译,就像我用英语翻译一样,问候。
自从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
您也可以使用这种语法。YYYY-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}';