Aus öffentlichen Paketdaten erstellte Orientierung.
Ein Flutter/Dart-Paket, das Hilfsmittel zum Formatieren von Dart-DateTime-Objekten bereitstellt. Es unterstützt sowohl die Standardnotation für Datum/Uhrzeit als auch relative Zeitverschiebungen (z. B. „vor 2 Minuten“). Entwickelt, um die Darstellung von Daten in Apps über mehrere Plattformen hinweg zu vereinfachen, bietet es saubere, lesbare Ausgaben ohne komplizierte manuelle Formatierung. Das Paket ist leichtgewichtig und lässt sich nahtlos in bestehende Projekte integrieren.
Anwendungsfälle
Anzeige von Benutzeraktivitäts-Zeitstempeln
Datumsformatierung in Chat- oder Sozialmedien-Apps
Relative Zeit seit einem Ereignis anzeigen
Lokalisierung von Datumsanzeigern in mehrsprachigen Apps
Vereinfachung der Datumszeichenfolgen-Erzeugung in Benutzeroberflächenkomponenten
Hauptmerkmale
Unterstützt relative Zeitformatierung
Behandelt Standard-Datums-/Zeitmuster
Leichtgewichtig und einfach zu integrieren
Plattformübergreifende Kompatibilität
Einfache API für häufige Formatierungsanforderungen
Geeignet für
Apps, die lesbare Zeitstempel benötigen
Entwickler, die minimale Datumsformatierungslösungen suchen
Projekte für mehrere Plattformen
UI-intensive Anwendungen mit häufiger Datumsanzeige
Teams, die Code-Einfachheit und Wartbarkeit priorisieren
Hinweise
Beschränkt auf grundlegende Formatierungsoptionen
Keine integrierte Lokalisierungssupport
Beruht auf den Standard-Einstellungen der Systemlokalisation
Kann zusätzliche Einrichtung für benutzerdefinierte Formate erfordern
Nicht geeignet für komplexe internationale Datumsverwaltung
Original-README
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
date_time_format
A utility class, and extension methods, for formatting Dart's [DateTime]
object using standard date/time notation or as a relative time offset.
date_time_format exposes 2 utility methods, [format] and [relative], that
are added to the [DateTime] class as extension methods or can be accessed
via the [DateTimeFormat] utility class.
[format] and [relative] format [DateTime] objects as defined by standard
date/time notation or as relative to the current or a provided [DateTime],
respectively.
See the Date/Time Notations section below for a complete list of supported
formatting notations.
In addition to the formatting utilities, a variety of date/time notation
formatting constants are pre-defined in the following classes: DateTimeFormats
contains standard date/time formatting notations. DateFormats
and TimeFormats contain common date-only and time-only
formatting constants, respectively. Additional American and European date/time
formatting constants can be found in the AmericanDateFormats,
AmericanDateTimeFormats, EuropeanDateFormats, and EuropeanDateTimeFormats classes.
Standard Formatting
Note: Each example below shows the extension method being utilized, and
the utility method being used on the next line. Both methods will return the
same output.
final dateTime = DateTime.now();
// 2019-10-15T19:42:05-08:00print(dateTime.format());
print(DateTimeFormat.format(dateTime));
// October 15, 2019 7:42 pmprint(dateTime.format(DateTimeFormats.american));
print(DateTimeFormat.format(dateTime, format: DateTimeFormats.american));
// 15/Oct/2019:19:42:05 -0700print(dateTime.format(DateTimeFormats.commonLogFormat));
print(DateTimeFormat.format(dateTime, format: DateTimeFormats.commonLogFormat));
// Tuesday, October 15, 2019print(dateTime.format(AmericanDateFormats.dayOfWeek));
print(DateTimeFormat.format(dateTime, format: AmericanDateFormats.dayOfWeek));
// Tue, Oct 15, 19:42print(dateTime.format('D, M j, H:i'));
print(DateTimeFormat.format(dateTime, format: 'D, M j, H:i'));
Relative Formatting
By default, [DateTimeFormat.relative] returns the time offset rounded to the nearest
whole unit of time.
To compare the provided [DateTime] to another [DateTime] object, the [relativeTo]
parameter can be set.
final timeOffset1 = dateTime.subtract(Duration(minutes: 5));
final timeOffset2 = dateTime.add(Duration(minutes: 5));
// 5 minutesprint(DateTimeFormat.relative(timeOffset1));
// 10 minutesprint(DateTimeFormat.relative(timeOffset1, relativeTo: timeOffset2));
Level of Precision:
The [levelOfPrecision] parameter sets the degrees of removal from the largest
interval counted that will be included in the count. I.e. minutes are 1
degree removed from hours, and seconds are 2 degrees removed from hours but
only 1 degree removed from minutes.
Note: Weeks can be excluded as an interval of time by setting the
[excludeWeeks] parameter to true, and will not be counted as a degree
of time in regards to [levelOfPrecision].
The minimum and maximum intervals to include in the count can be specified by
the [minUnitOfTime] and [maxUnitOfTime] respectively. The largest possible
interval of time being a year, and the smallest being a microsecond.
By default, the smallest unit of time returned is a second, to include milliseconds
or microseconds the [minUnitOfTime] parameter must be set to [UnitOfTime.milliseconds]/
[UnitOfTime.microseconds]. Note: Milliseconds and microseconds may be returned slightly
off from the expected values if the function takes longer to process than those intervals
of time.
Rounding, which is enabled by default, can be disabled by setting the [round]
parameter to false, in which case any measure of time that isn't included
in the smallest returned interval will be truncated.
[formatAfter] can be set to a [Duration] of time to return a standard formatted
date/time stamp, via the [DateTimeFormat.format] method, if the difference in
time is greater than the duration specified.
By default, date/time stamps will be formatted to the [AmericanDateTimeStamp.abbrWithComma]
constant. A different formatting notation can be provided via the [format] parameter.
final timeOffset = dateTime.subtract(Duration(days: 762, hours: 6, minutes: 30));
// 2 yearsprint(DateTimeFormat.relative(timeOffset));
// Apr 29, 2018 6:27 amprint(DateTimeFormat.relative(timeOffset, formatAfter: Duration(days: 365)));
// 6:27 am · Apr 29, 2018print(DateTimeFormat.relative(timeOffset, formatAfter: Duration(days: 365),
format: r'g:i a · M j, Y'));
Prepending & Appending Text:
[prependIfBefore] and [appendIfAfter] can be used to conveniently prepend and/or append a
[String] before or after the returned relative time offset if the formatted [DateTime] occurs
before or after [relativeTo] (which defaults to DateTime.now()), respectively.
// 5 days agoprint(DateTimeFormat.relative(dateTime.subtract(Duration(days: 5)),
prependIfBefore: 'In', appendIfAfter: 'ago'));
// In 5 daysprint(DateTimeFormat.relative(dateTime.add(Duration(days: 5)),
prependIfBefore: 'In', appendIfAfter: 'ago'));
Return X Below Minimum Unit of Time:
The [ifNow] parameter can be set to return a value if the difference in time is less
than [minUnitOfTime], otherwise, an empty string will be returned.