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