it-swarm.com.de

Wie formatiere ich ein Datum mit Dart?

Ich habe eine Instanz von DateTime und möchte diese in einen String formatieren. Wie mache ich das? Ich möchte das Datum in eine Zeichenfolge umwandeln, etwa "2013-04-20".

78
Seth Ladd

Sie können das Paket intl ( installer ) verwenden, um Datumsangaben zu formatieren.

Zum en_US Formate, es ist ganz einfach:

import 'package:intl/intl.Dart';

main() {
  var now = new DateTime.now();
  var formatter = new DateFormat('yyyy-MM-dd');
  String formatted = formatter.format(now);
  print(formatted); // something like 2013-04-20
}

Es gibt viele Formatierungsoptionen. Aus den Dokumenten:

 ICU Name                   Skeleton
 --------                   --------
 DAY                          d
 ABBR_WEEKDAY                 E
 WEEKDAY                      EEEE
 ABBR_STANDALONE_MONTH        LLL
 STANDALONE_MONTH             LLLL
 NUM_MONTH                    M
 NUM_MONTH_DAY                Md
 NUM_MONTH_WEEKDAY_DAY        MEd
 ABBR_MONTH                   MMM
 ABBR_MONTH_DAY               MMMd
 ABBR_MONTH_WEEKDAY_DAY       MMMEd
 MONTH                        MMMM
 MONTH_DAY                    MMMMd
 MONTH_WEEKDAY_DAY            MMMMEEEEd
 ABBR_QUARTER                 QQQ
 QUARTER                      QQQQ
 YEAR                         y
 YEAR_NUM_MONTH               yM
 YEAR_NUM_MONTH_DAY           yMd
 YEAR_NUM_MONTH_WEEKDAY_DAY   yMEd
 YEAR_ABBR_MONTH              yMMM
 YEAR_ABBR_MONTH_DAY          yMMMd
 YEAR_ABBR_MONTH_WEEKDAY_DAY  yMMMEd
 YEAR_MONTH                   yMMMM
 YEAR_MONTH_DAY               yMMMMd
 YEAR_MONTH_WEEKDAY_DAY       yMMMMEEEEd
 YEAR_ABBR_QUARTER            yQQQ
 YEAR_QUARTER                 yQQQQ
 HOUR24                       H
 HOUR24_MINUTE                Hm
 HOUR24_MINUTE_SECOND         Hms
 HOUR                         j
 HOUR_MINUTE                  jm
 HOUR_MINUTE_SECOND           jms
 HOUR_MINUTE_GENERIC_TZ       jmv
 HOUR_MINUTE_TZ               jmz
 HOUR_GENERIC_TZ              jv
 HOUR_TZ                      jz
 MINUTE                       m
 MINUTE_SECOND                ms
 SECOND                       s

Für nicht-en_US-Daten müssen Sie das Gebietsschema explizit laden. Siehe https://www.dartdocs.org/documentation/intl/latest/intl/DateFormat-class.html für weitere Informationen.

163
Seth Ladd

Das wird auch funktionieren:

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

Dies gibt Ihnen das Datum wie in einem sozialen Netzwerk: ["Heute", "Gestern", "Wochentag", etc ..]

void main() {
      DateTime now = new DateTime(2018,6,26);
      print(date(now));
    }

    String date(DateTime tm) {
      DateTime today = new DateTime.now();
      Duration oneDay = new Duration(days: 1);
      Duration twoDay = new Duration(days: 2);
      Duration oneWeek = new Duration(days: 7);
      String month;
      switch (tm.month) {
        case 1:
          month = "january";
          break;
        case 2:
          month = "february";
          break;
        case 3:
          month = "march";
          break;
        case 4:
          month = "april";
          break;
        case 5:
          month = "may";
          break;
        case 6:
          month = "june";
          break;
        case 7:
          month = "july";
          break;
        case 8:
          month = "august";
          break;
        case 9:
          month = "september";
          break;
        case 10:
          month = "october";
          break;
        case 11:
          month = "november";
          break;
        case 12:
          month = "december";
          break;
      }

      Duration difference = today.difference(tm);

      if (difference.compareTo(oneDay) < 1) {
        return "today";
      } else if (difference.compareTo(twoDay) < 1) {
        return "yesterday";
      } else if (difference.compareTo(oneWeek) < 1) {
        switch (tm.weekday) {
          case 1:
            return "monday";
          case 2:
            return "tuesday";
          case 3:
            return "wednesday";
          case 4:
            return "thurdsday";
          case 5:
            return "friday";
          case 6:
            return "saturday";
          case 7:
            return "sunday";
        }
      } else if (tm.year == today.year) {
        return '${tm.day} $month';
      } else {
        return '${tm.day} $month ${tm.year}';
      }
      return "";
    }
7
Raoul Scalise

Sie können auch das Datumsformat wie oben angegeben angeben: https://pub.dartlang.org/documentation/intl/latest/intl/DateFormat-class.html

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

Erzeugt: March 4

6
Rody Davis

Es gibt ein Paket date_format

dependencies:
    date_format: ^1.0.6

code

import 'package:date_format/date_format.Dart';

final formattedStr = formatDate(
    yourDateTime, [dd, '.', mm, '.', yy, ' ', HH, ':', nn]);

// output example "29.03.19 07:00"

Achtung: Minuten sind nn

Link zum Paket

5
Andrey

Sie können diese Funktion auch verwenden.

String getFormattedTime(int totalSeconds) {

    if (totalSeconds < 0) {
      return "00:00:00";
    }

    int remainingHours = (totalSeconds / 3600).floor();
    int remainingMinutes = (totalSeconds / 60).floor() - remainingHours * 60;
    int remainingSeconds = totalSeconds - remainingMinutes * 60 - remainingHours * 3600;

    return remainingHours.toString().padLeft(2, '0') +
        ":" +
        remainingMinutes.toString().padLeft(2, '0') +
        ":" +
        remainingSeconds.toString().padLeft(2, '0');
  }

Eingabe: 3600 (In Sek.)

Ausgabe: 01:00:00

padLeft(2, '0')

Wurde zum Formatieren der endgültigen Zeichenfolge verwendet (d. H. Zum Hinzufügen einer nachgestellten Null).

0
Varun Raj