我有一个DateTime的实例,我想将其格式化为字符串。我怎么做呢?我想把日期转换成一个字符串,类似于“2013-04-20”。


当前回答

一个更简单的方法:

new DateFormat("dd-MM-y").format(YOUR_DATETIME_HERE)

其他回答

另一种方法,使用intl包。

创建DateTime的扩展:

date_time_extension.dart

import 'package:intl/date_symbol_data_local.dart';
import 'package:intl/intl.dart';

extension DateTimeExtension on DateTime {
  String format([String pattern = 'dd/MM/yyyy', String? locale]) {
    if (locale != null && locale.isNotEmpty) {
      initializeDateFormatting(locale);
    }
    return DateFormat(pattern, locale).format(this);
  }
}

导入你要使用DateTime类型的文件,你可以这样使用它:

DateTime.now().format();

DateTime.now().format('MM/yyyy');

DateTime.now().format('MM/yyyy', 'es');

如果不想添加另一个库,也可以使用此方法

  DateTime dateTime = DateTime.now();
  String YYYY_MM_DD = dateTime.toIso8601String().split('T').first;
  print(YYYY_MM_DD); //2020-11-23

有一个包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

链接到软件包

import 'package:intl/intl.dart';

main() {
  var formattedDate = new DateTime.Format('yyyy-MM-dd').DateTime.now();
  print(formattedDate); // something like 2020-04-16
}

有关更多详细信息,请参阅DateFormat文档

您还可以像前面所述的那样指定日期格式:https://pub.dev/documentation/intl/latest/intl/DateFormat-class.html

import 'package:intl/intl.dart';
String formatDate(DateTime date) => new DateFormat("MMMM d").format(date);

出品时间:3月4日