Search packages, repositories and app categories

Package detailsv4.0.3

duration

Utilities to make working with 'Duration's easier. Formats duration in human readable form and also parses duration in human readable form to Dart's Duration.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
103K
Likes
172
Pub points
150

Install package

flutter pub add duration

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The duration package provides utilities to simplify working with Dart's Duration class. It enables formatting durations into human-readable strings (e.g., '2h 30m') and parsing such strings back into Duration objects. This is particularly useful for displaying time intervals in user interfaces or accepting time input from users in a natural format. The package supports all major platforms, including mobile, web, and desktop, making it ideal for cross-platform applications that handle time-related data.

Use cases

  • Displaying elapsed time in a readable format
  • Parsing user-entered time expressions
  • Converting between duration representations
  • Time tracking in apps
  • Scheduling or countdown features

Key features

  • Human-readable duration formatting
  • String-to-Duration parsing
  • Cross-platform compatibility
  • Simple API with minimal setup
  • Supports hours, minutes, seconds, and milliseconds

Suitable for

  • Apps needing time display formatting
  • User-facing time input fields
  • Task or timer applications
  • Cross-platform time utilities
  • Developers seeking lightweight duration helpers

Considerations

  • Does not support complex time zones or calendar calculations
  • Limited to basic duration units
  • Requires manual validation for edge cases
  • Not suitable for date arithmetic
  • No built-in localization support

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

duration pub package

Utilities to make working with 'Duration's easier.

Format duration

Use Duration.pretty() method or prettyDuration function to format a duration.

main() {
  final dur = Duration(
    days: 5,
    hours: 23,
    minutes: 59,
    seconds: 59,
    milliseconds: 999,
    microseconds: 999,
  );

  // => 5d, 23h, 59m, 59s
  print(dur.pretty());

  // => 3 seconds
  print((aMillisecond * 3000).pretty());

  // => 2 seconds 250 milliseconds
  print((aMillisecond * 2250).pretty);

  // => 1 day 3 hours 2 minutes
  print((aMillisecond * 97320000).pretty());
}

With desired locale

Use locale parameter to format with desired locale.

main() {
  // => 5 días 9 horas
  final dur = aDay * 5 + anHour * 9;
  print(
      dur.pretty(
        abbreviated: false,
        locale: DurationLocale.fromLanguageCode('ru'),
      ));
}

Abbreviate units

Use abbreviated parameter to use abbreviated units.

main() {
  final dur = Duration(
    days: 5,
    hours: 23,
    minutes: 59,
    seconds: 59,
    milliseconds: 999,
    microseconds: 999,
  );

  // => 5d, 23h, 59m, 59s, 999ms, 999us
  print(dur.pretty(abbreviated: true, tersity: DurationTersity.all));
}

Spacer

Use spacer to add a string between amount and unit.

main() {
  // => 5 whole days 9 whole hours
  print((aDay * 5 + anHour * 9).pretty(spacer: ' whole '));
}

Delimiter

Use delimiter to separate each individual part with a string.

main() {
  // => 5 days, 9 hours and 10 minute
  print((aDay * 5 + anHour * 9 + aMinute * 10).pretty(delimiter: ', '));
}

Conjugation

Use conjugation to add a string before the final unit. Use it in conjunction with delimiter to add ',' and 'and' to separate individual parts.

main() {
  // => 5 days, 9 hours and 10 minutes
  print(
      (aDay * 5 + anHour * 9 + aMinute * 10).pretty(
        delimiter: ', ',
        conjugation: ' and ',
      ));
}

Parse duration

Parse duration

main() {
  final Duration dur = parseDuration('245:09:08.007006');
  print(dur);
}

Parse time

main() {
  final Duration dur = parseTime('245:09:08.007006');
  print(dur);
}

Categories

Source repository

Projects using this package