Simplifying Time and Date Operations in Dart with the “time” Package

Vinayak
YavarTechWorks
Published in
2 min readJan 29, 2024

Time and date operations are fundamental in software development, whether you’re calculating durations, working with specific points in time, or dealing with delays. Dart, as a versatile programming language, provides powerful tools for handling time-related tasks. One such tool is the time package, which streamlines time and date operations, making code cleaner and more readable.

Installation

To get started with the time package, include it in your Dart project’s dependencies. Open your pubspec.yaml file and add the following:

dependencies:
time: "2.1.4"

Then, run flutter pub get to get the package.

Importing the Package

Once the package is added, import it into your Dart files:

import 'package:time/time.dart';

Now, let’s dive into the various features and functionalities the time package offers.

Basic Usage

The time package introduces intuitive syntax for defining durations and working with date and time. Here are some basic examples:

final Duration tenMinutes = 10.minutes;
final DateTime afterTenMinutes = DateTime.now() + 10.minutes;

The 10.minutes syntax simplifies code readability, making it clear that you’re working with a duration of 10 minutes.

Arithmetic Operations

Performing arithmetic operations on durations and date-times is straightforward:

final Duration interval = 10.minutes + 15.seconds - 3.minutes + 2.hours;
final Duration doubled = interval * 2;

These operations make code concise and expressive, allowing you to focus on the logic rather than cumbersome calculations.

Delaying Code Execution

The time package introduces an elegant way to introduce delays in your code:

void doSomething() async {
await 5.seconds.delay;
// Code executed after a 5-second delay
}

This can be especially useful for scenarios where you need to pause execution before proceeding with other tasks.

DateTime Extensions

The package extends the capabilities of working with DateTime objects:

final DateTime timeInFuture = 5.minutes.fromNow;
final DateTime timeInPast = 5.minutes.ago;

These extensions provide a more declarative way of expressing temporal relationships.

DateTime Comparison

DateTime comparisons between different fields of DateTime are available:

final DateTime specificDate = DateTime(2021, 01, 01);
final DateTime otherDate = DateTime(2021, 02, 01);
print(specificDate.isAtSameYearAs(otherDate)); // true
print(specificDate.isAtSameMonthAs(otherDate)); // false
print(specificDate.isAtSameDayAs(otherDate)); // false

These comparisons offer precision when evaluating date-time relationships.

Num Extensions

The time package even extends numerical values:

print(1.weeks);
print(1.5.weeks);

This extension brings a consistent and expressive approach when working with numerical representations of time.

Conclusion

The time package in Dart provides a delightful experience for handling time and date operations. Its concise syntax and intuitive extensions contribute to cleaner and more readable code. Whether you’re dealing with durations, date-times, or delays, the time package streamlines your workflow, allowing you to focus on building robust and efficient applications.

Incorporate the time package into your Dart projects and witness the elegance it brings to your time-related code. Happy coding!

Thanks for reading this article ❤

--

--