我有一个DateTime的实例,我想将其格式化为字符串。我怎么做呢?我想把日期转换成一个字符串,类似于“2013-04-20”。
当前回答
/// Get date as a string for display.
String getFormattedDate(String date) {
/// Convert into local date format.
var localDate = DateTime.parse(date).toLocal();
/// inputFormat - format getting from api or other func.
/// e.g If 2021-05-27 9:34:12.781341 then format must be yyyy-MM-dd HH:mm
/// If 27/05/2021 9:34:12.781341 then format must be dd/MM/yyyy HH:mm
var inputFormat = DateFormat('yyyy-MM-dd HH:mm');
var inputDate = inputFormat.parse(localDate.toString());
/// outputFormat - convert into format you want to show.
var outputFormat = DateFormat('dd/MM/yyyy HH:mm');
var outputDate = outputFormat.format(inputDate);
return outputDate.toString();
}
其他回答
可以使用intl包格式化flutter中的日期。
void main() {
final DateTime now = DateTime.now();
final DateFormat format = DateFormat('yyyy-MM-dd');
final String formatted = format.format(now);
// 2021-03-02
}
或者可以使用date_format包来格式化flutter中的日期。
import 'package:date_format/date_format.dart';
final formattedStr = formatDate(DateTime.now(), [dd, '-', mm, '-', yyyy]);
//02-03-2021
这也会起作用:
DateTime today = new DateTime.now();
String dateSlug ="${today.year.toString()}-${today.month.toString().padLeft(2,'0')}-${today.day.toString().padLeft(2,'0')}";
print(dateSlug);
有一个包date_format
dependencies:
date_format:
code
import 'package:date_format/date_format.dart';
final formattedStr = formatDate(
yourDateTime, [dd, '.', mm, '.', yy, ' ', HH, ':', nn]);
// output example "29.03.19 07:00"
注意:分钟是nn
链接到软件包
由于flutter常用的Datetime库不知道德国的区域设置——de、de、de_DE、de- de或任何其他组合都不知道,例如,如果您希望用人类可读的字符串编写月份名称或日期名称,我建议您使用以下代码。
安装pub flutter pub add date_format
String formattedDate = formatDate(DateTime(year, month, day),[dd,'. ', MM, ' ', yyyy], locale: GermanDateLocale());
要获得一个用户友好的字符串,包括日期和时间,你可以使用这个:
import 'package:intl/intl.dart';
main() {
final DateTime someDateTime = DateTime(2017, 9, 7, 17, 30);
final DateFormat formatter = DateFormat.yMMMd().add_jms();
final String formatted = formatter.format(someDateTime);
print(formatted); // Sep 7, 2017 5:30:00 PM (in the US)
}