timeRemainingUntil method

String timeRemainingUntil([
  1. DateTime? now
])

Calculates time remaining in seconds until now and returns '04:39:01:58' or '0' if no time remaining.

Example:

final now = DateTime.now();
final date = DateTime(2026, 6, 12, 10, 40);
final remaining = date.timeRemainingUntil(now);
// returns: '00:01:00:00'

Implementation

String timeRemainingUntil([DateTime? now]) {
  now ??= DateTime.now();

  final d = difference(now).inSeconds > 0
      ? difference(now)
      : const Duration(seconds: 0);

  if (d.inSeconds <= 0) return '0';

  final days = d.inDays;
  final hours = d.inHours.remainder(24);
  final minutes = d.inMinutes.remainder(60);
  final seconds = d.inSeconds.remainder(60);

  return '${days.toString().padLeft(2, '0')}:'
      '${hours.toString().padLeft(2, '0')}:'
      '${minutes.toString().padLeft(2, '0')}'
      ':${seconds.toString().padLeft(2, '0')}';
}