Ein Dart-Paket zum Konvertieren und Formatieren von `DateTime`-Objekten in menschenlesbare 'vor X Zeit'-Strings wie 'vor 20 Sekunden', 'vor einer Minute' oder 'vor 7 Stunden'.
Aus öffentlichen Paketdaten erstellte Orientierung.
Ein leichtgewichtiger Dart-Paket, der DateTime-Objekte in menschenlesbare 'vor X Zeit'-Strings wie 'vor 20 Sekunden' oder 'vor 7 Stunden' umwandelt. Es vereinfacht die Anzeige relativer Zeitstempel in Apps und verbessert die Benutzererfahrung durch eine natürliche, dialogartige Darstellung der Zeit. Das Paket unterstützt mehrere Plattformen und lässt sich einfach in Flutter-Projekte integrieren.
Anwendungsfälle
Anzeigen von Post-Zeitstempeln in sozialen Medien-Apps
Anzeigen von Nachrichtenversandzeiten in Chat-Oberflächen
Aktivitätsfeeds mit relativen Zeitbezeichnungen aktualisieren
Verbesserung der Benutzeroberflächenelesbarkeit mit natürlicher Sprachzeit
Verfolgung von Ereignisdauern in Echtzeitanwendungen
Projekte, die sich auf UX mit zeitgestempelten Inhalten konzentrieren
Entwickler, die minimale Datumsformatierungslösungen suchen
Hinweise
Unterstützt keine benutzerdefinierte Lokalisierungsformatierung out of the box
Beschränkt auf relative Zeitformate, nicht auf absolute Daten
Benötigt manuelle Behandlung für Zeitzone-Differenzen
Original-README
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
get_time_ago
A Dart package that converts and formats DateTime objects into human-readable 'time ago' strings, such as '20 seconds ago', 'a minute ago', or '7 hours ago'. This package provides an easy way to display relative time differences in your Flutter or Dart applications. It supports various time units (seconds, minutes, hours, days, etc.) and automatically adjusts the format based on how recent the event occurred. Ideal for displaying timestamps in news feeds, social media posts, or chat messages.
In version 2.0.0, a new method justNow(int seconds) has been added to the Messages interface. This method is responsible for providing a custom message when the elapsed time is less than 15 seconds.
Impact on Custom Implementations:
If you have implemented any custom locales by extending the Messages interface, you will need to update your implementation to include the new justNow method. Failing to implement this method will result in compilation errors.
Example of Custom Locale Update:
Before:
classMyCustomMessagesimplementsMessages{
@overrideStringprefixAgo() => '';
@overrideStringsuffixAgo() => 'ago';
// Implement the other methods here...
}
After (Version 2.0.0):
classMyCustomMessagesimplementsMessages{
@overrideStringprefixAgo() => '';
@overrideStringsuffixAgo() => 'ago';
@overrideStringjustNow(int seconds) => 'just now'; // New method// Implement the other methods here...
}
This section explains the breaking change, the impact it has on custom implementations, and provides an example of how to update existing code to comply with the new changes in version ^2.0.0.
Add get_time_ago as a dependency in your pubspec.yaml file.
dependencies:get_time_ago:^latest_version
Usage
Format any DateTime object into get_time_ago format by following steps:
// Import the pluginimport'package:get_time_ago/get_time_ago.dart';
// Pass DateTime object as argument in the methodvar _dateTime = DateTime.now().subtract(constDuration(minutes: 10)); // [DateTime] objectprint(GetTimeAgo.parse(_dateTime)); // 10 minutes ago// Formatting with localeprint(GetTimeAgo.parse(_dateTime, locale:'es')); // hace 10 minutos
Formatting String as get_time_ago
If you have saved a DateTime object as a String into a variable, database or cloud, then you have
to first convert the String into DateTime object and then pass it as argument in parse method
of get_time_ago plugin to format it into get_time_ago format by following steps:
// Import the pluginimport'package:get_time_ago/get_time_ago.dart';
var _timestamp = '2021-05-10 05:21:37.712498'; // [DateTime] formatted as String.var _convertedTimestamp = DateTime.parse(_timestamp); // Converting into [DateTime] objectvar result = GetTimeAgo.parse(_convertedTimestamp);
print(result);
Setting default locale
If you want to change your default locale, then call setDefaultLocale method and pass
the locale code as the argument.
// Import the pluginimport'package:get_time_ago/get_time_ago.dart';
@overridevoidinitState() {
super.initState();
GetTimeAgo.setDefaultLocale('fr'); // Sets the default locale to French
}
Setting Custom Locale & Messages
Implementing and Adding Custom Messages
classCustomMessagesimplementsMessages{
/// Prefix added before the time message.@overrideStringprefixAgo() => '';
/// Suffix added after the time message.@overrideStringsuffixAgo() => 'ago';
/// Message when the elapsed time is less than 15 seconds.@overrideStringjustNow(int seconds) => 'just now';
/// Message for when the elapsed time is less than a minute.@overrideStringsecsAgo(int seconds) => '$seconds seconds';
/// Message for when the elapsed time is about a minute.@overrideStringminAgo(int minutes) => 'a minute';
/// Message for when the elapsed time is in minutes.@overrideStringminsAgo(int minutes) => '$minutes minutes';
/// Message for when the elapsed time is about an hour.@overrideStringhourAgo(int minutes) => 'an hour';
/// Message for when the elapsed time is in hours.@overrideStringhoursAgo(int hours) => '$hours hours';
/// Message for when the elapsed time is about a day.@overrideStringdayAgo(int hours) => 'a day';
/// Message for when the elapsed time is in days.@overrideStringdaysAgo(int days) => '$days days';
/// Word separator to be used when joining the parts of the message.@overrideStringwordSeparator() => ' ';
}
Overriding en Locale Messages with Custom Messages
If you would like to contribute to this project, feel free to fork the repository, make your changes, and submit a pull request. Please follow the guidelines in the CONTRIBUTING.md file.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Your support helps me dedicate more time to developing high-quality, impactful projects in the open-source community. Sponsor me, and together, let’s bring even more innovation to life!