How do I format a date with Dart? How do I format a date with Dart? dart dart

How do I format a date with Dart?


You can use the intl package (installer) to format dates.

For en_US formats, it's quite simple:

import 'package:intl/intl.dart';main() {  final DateTime now = DateTime.now();  final DateFormat formatter = DateFormat('yyyy-MM-dd');  final String formatted = formatter.format(now);  print(formatted); // something like 2013-04-20}

There are many options for formatting. From the docs:

ICU Name                   Skeleton--------                   --------DAY                          dABBR_WEEKDAY                 EWEEKDAY                      EEEEABBR_STANDALONE_MONTH        LLLSTANDALONE_MONTH             LLLLNUM_MONTH                    MNUM_MONTH_DAY                MdNUM_MONTH_WEEKDAY_DAY        MEdABBR_MONTH                   MMMABBR_MONTH_DAY               MMMdABBR_MONTH_WEEKDAY_DAY       MMMEdMONTH                        MMMMMONTH_DAY                    MMMMdMONTH_WEEKDAY_DAY            MMMMEEEEdABBR_QUARTER                 QQQQUARTER                      QQQQYEAR                         yYEAR_NUM_MONTH               yMYEAR_NUM_MONTH_DAY           yMdYEAR_NUM_MONTH_WEEKDAY_DAY   yMEdYEAR_ABBR_MONTH              yMMMYEAR_ABBR_MONTH_DAY          yMMMdYEAR_ABBR_MONTH_WEEKDAY_DAY  yMMMEdYEAR_MONTH                   yMMMMYEAR_MONTH_DAY               yMMMMdYEAR_MONTH_WEEKDAY_DAY       yMMMMEEEEdYEAR_ABBR_QUARTER            yQQQYEAR_QUARTER                 yQQQQHOUR24                       HHOUR24_MINUTE                HmHOUR24_MINUTE_SECOND         HmsHOUR                         jHOUR_MINUTE                  jmHOUR_MINUTE_SECOND           jmsHOUR_MINUTE_GENERIC_TZ       jmvHOUR_MINUTE_TZ               jmzHOUR_GENERIC_TZ              jvHOUR_TZ                      jzMINUTE                       mMINUTE_SECOND                msSECOND                       s

For non-en_US dates, you need to explicitly load in the locale. See the DateFormat docs for more info. The date_symbol_data_local.dart contains all of the formats for each country/language, if you would like a more in-depth look.


This will work too:

DateTime today = new DateTime.now();String dateSlug ="${today.year.toString()}-${today.month.toString().padLeft(2,'0')}-${today.day.toString().padLeft(2,'0')}";print(dateSlug);


You can also specify the date format like stated earlier: 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);

Produces: March 4