get_time_ago 2.1.1 copy "get_time_ago: ^2.1.1" to clipboard
get_time_ago: ^2.1.1 copied to clipboard

A Dart package to convert and format `DateTime` objects into human-readable 'time ago' strings like '20 seconds ago', 'a minute ago', or '7 hours ago'.

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.

pub package Stars Forks Watchers Contributors CI

GitHub release (latest by date) GitHub last commit GitHub issues GitHub pull requests GitHub License

Table of Contents #

Breaking Changes for the Version ^2.0.0 #

1. Added justNow Method in Messages Interface #

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:

class MyCustomMessages implements Messages {
  @override
  String prefixAgo() => '';

  @override
  String suffixAgo() => 'ago';

  // Implement the other methods here...
}
copied to clipboard

After (Version 2.0.0):

class MyCustomMessages implements Messages {
  @override
  String prefixAgo() => '';

  @override
  String suffixAgo() => 'ago';

  @override
  String justNow(int seconds) => 'just now';  // New method

  // Implement the other methods here...
}
copied to clipboard

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.

Demo #

Click here to experience the demo in a Web App #

Installation #

Add get_time_ago as a dependency in your pubspec.yaml file.

dependencies:
  get_time_ago: ^latest_version
copied to clipboard

Usage #

Format any DateTime object into get_time_ago format by following steps:

// Import the plugin
import 'package:get_time_ago/get_time_ago.dart';

// Pass DateTime object as argument in the method
var _dateTime = DateTime.now().subtract(const Duration(minutes: 10)); // [DateTime] object
print(GetTimeAgo.parse(_dateTime)); // 10 minutes ago

// Formatting with locale
print(GetTimeAgo.parse(_dateTime, locale:'es')); // hace 10 minutos
copied to clipboard

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 plugin
import '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] object
var result = GetTimeAgo.parse(_convertedTimestamp);
print(result);
copied to clipboard

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 plugin
import 'package:get_time_ago/get_time_ago.dart';

@override
void initState() {
  super.initState();
  GetTimeAgo.setDefaultLocale('fr'); // Sets the default locale to French
}
copied to clipboard

Setting Custom Locale & Messages #

Implementing and Adding Custom Messages

class CustomMessages implements Messages {
  /// Prefix added before the time message.
  @override
  String prefixAgo() => '';

  /// Suffix added after the time message.
  @override
  String suffixAgo() => 'ago';

  /// Message when the elapsed time is less than 15 seconds.
  @override
  String justNow(int seconds) => 'just now';

  /// Message for when the elapsed time is less than a minute.
  @override
  String secsAgo(int seconds) => '$seconds seconds';

  /// Message for when the elapsed time is about a minute.
  @override
  String minAgo(int minutes) => 'a minute';

  /// Message for when the elapsed time is in minutes.
  @override
  String minsAgo(int minutes) => '$minutes minutes';

  /// Message for when the elapsed time is about an hour.
  @override
  String hourAgo(int minutes) => 'an hour';

  /// Message for when the elapsed time is in hours.
  @override
  String hoursAgo(int hours) => '$hours hours';

  /// Message for when the elapsed time is about a day.
  @override
  String dayAgo(int hours) => 'a day';

  /// Message for when the elapsed time is in days.
  @override
  String daysAgo(int days) => '$days days';

  /// Word separator to be used when joining the parts of the message.
  @override
  String wordSeparator() => ' ';
}
copied to clipboard

Overriding en Locale Messages with Custom Messages

GetTimeAgo.setCustomLocaleMessages('en', CustomMessages());
copied to clipboard

Supported Languages #

  • Arabic
  • English
  • Spanish
  • Persian (Farsi)
  • French
  • Hindi
  • Portuguese (Brazil)
  • Portuguese (Brazil alternate)
  • Simplified Chinese
  • Traditional Chinese
  • Japanese
  • Occitan
  • Korean
  • German
  • Indonesian
  • Turkish
  • Urdu
  • Vietnamese
  • Romanian
  • Dutch
  • Open to accept PR for adding more languages

Contributing #

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.

Support My Work #

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!

Sponsor

ko-fi

"Buy Me A Coffee"

Connect With Me #

GitHub: nixrajput Linkedin: nixrajput Instagram: nixrajput Twitter: nixrajput07 Telegram: nixrajput Gmail: nkr.nikhi.nkr@gmail.com

Activities #

Alt

138
likes
150
points
7.66k
downloads

Publisher

verified publishernixrajput.com

Weekly Downloads

2024.06.05 - 2024.12.18

A Dart package to convert and format `DateTime` objects into human-readable 'time ago' strings like '20 seconds ago', 'a minute ago', or '7 hours ago'.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#get-time-ago #gettimeago #timeago #time-ago

Documentation

API reference

Funding

Consider supporting this project:

ko-fi.com
buymeacoffee.com
github.com

License

MIT (license)

Dependencies

intl

More

Packages that depend on get_time_ago