How get the name of the days of the week in Dart

FlutterDatetimeDart

Flutter Problem Overview


Somebody knows how can I extract from DateTime the name of the day of the week?

ej:

DateTime date = DateTime.now();
String dateFormat = DateFormat('dd-MM-yyyy hh:mm').format(date);

Result -> Friday

Flutter Solutions


Solution 1 - Flutter

Use 'EEEE' as a date pattern

 DateFormat('EEEE').format(date); /// e.g Thursday

Don't forget to import

import 'package:intl/intl.dart';

Check this for more info : https://pub.dev/documentation/intl/latest/intl/DateFormat-class.html

Solution 2 - Flutter

in your pubspec.yaml file, dependencies section. add intl dependency like so :

dependencies:
  intl: ^0.16.0 // <-- dependency added here, remember to remove this comment
  // other dependencies . remove this comment too

more about intl dependency here : intl

> This package provides internationalization and localization facilities, including message translation, plurals and genders, date/number formatting and parsing, and bidirectional text.

and then at the top of your dart file import :

import 'package:intl/intl.dart';

now you can use DateFormat as you wish, here is an example :

var date = DateTime.now();
print(date.toString()); // prints something like 2019-12-10 10:02:22.287949
print(DateFormat('EEEE').format(date)); // prints Tuesday
print(DateFormat('EEEE, d MMM, yyyy').format(date)); // prints Tuesday, 10 Dec, 2019
print(DateFormat('h:mm a').format(date)); // prints 10:02 AM

there are many formats you can use with DateFormat, more details found here : https://api.flutter.dev/flutter/intl/DateFormat-class.html

hope this helps. Thank you

Solution 3 - Flutter

You can just use .weekday method to find out the day . eg:

 DateTime date = DateTime.now();
 print("weekday is ${date.weekday}");

This will return the weekday number, for eg tuesday is 2 , as shown below

class DateTime implements Comparable<DateTime> {
      // Weekday constants that are returned by [weekday] method:
      static const int monday = 1;
      static const int tuesday = 2;
      static const int wednesday = 3;
      static const int thursday = 4;
      static const int friday = 5;
      static const int saturday = 6;
      static const int sunday = 7;
      static const int daysPerWeek = 7;

Solution 4 - Flutter

You can use the below method to achieve the desired result. The return statement can be changed according to your preference. (This is if you want to skip the use of the intl package)

String dateFormatter(DateTime date) {
  dynamic dayData =
      '{ "1" : "Mon", "2" : "Tue", "3" : "Wed", "4" : "Thur", "5" : "Fri", "6" : "Sat", "7" : "Sun" }';

  dynamic monthData =
      '{ "1" : "Jan", "2" : "Feb", "3" : "Mar", "4" : "Apr", "5" : "May", "6" : "June", "7" : "Jul", "8" : "Aug", "9" : "Sep", "10" : "Oct", "11" : "Nov", "12" : "Dec" }';

  return json.decode(dayData)['${date.weekday}'] +
      ", " +
      date.day.toString() +
      " " +
      json.decode(monthData)['${date.month}'] +
      " " +
      date.year.toString();
}

You can call the above method as

dateFormatter(DateTime.now())

The produces the result - Sat, 11 Apr 2020

Solution 5 - Flutter

Extensions are good solutions. You can do it for weekday also.

extension DateTimeExtension on DateTime {
  String getMonthString() {
    switch (month) {
      case 1:
        return 'Jan.';
      case 2:
        return 'Feb.';
      case 3:
        return 'Mar.';
      case 4:
        return 'Apr.';
      case 5:
        return 'May';
      case 6:
        return 'Jun.';
      case 7:
        return 'Jul.';
      case 8:
        return 'Aug.';
      case 9:
        return 'Sept.';
      case 10:
        return 'Oct.';
      case 11:
        return 'Nov.';
      case 12:
        return 'Dec.';
      default:
        return 'Err';
    }
  }
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSami IssaView Question on Stackoverflow
Solution 1 - FlutterdiegoveloperView Answer on Stackoverflow
Solution 2 - FlutterRami IbrahimView Answer on Stackoverflow
Solution 3 - FluttersinghnikhilView Answer on Stackoverflow
Solution 4 - Flutteraseef khanView Answer on Stackoverflow
Solution 5 - FlutterMustafa Ali DikçinarView Answer on Stackoverflow