Files
tm_app/lib/core/utils/date_utils.dart
T
amirrezaghabeli bcd499843b fixed services
2025-08-27 13:03:09 +03:30

109 lines
3.0 KiB
Dart

import 'package:intl/intl.dart';
class DateUtils {
/// Converts Unix timestamp (seconds since epoch) to a formatted date string
static String unixToDate(int? unixTimestamp, {String format = 'yyyy-MM-dd'}) {
if (unixTimestamp == null) {
return '';
}
// Convert seconds to milliseconds if needed
int timestampInMs =
unixTimestamp > 1000000000000 ? unixTimestamp : unixTimestamp * 1000;
final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(
timestampInMs,
);
return DateFormat(format).format(dateTime);
}
/// Converts Unix timestamp to a readable date string
static String unixToReadableDate(int? unixTimestamp) {
if (unixTimestamp == null) {
return '';
}
int timestampInMs =
unixTimestamp > 1000000000000 ? unixTimestamp : unixTimestamp * 1000;
final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(
timestampInMs,
);
final DateTime now = DateTime.now();
final Duration difference = now.difference(dateTime);
if (difference.inDays == 0) {
return 'Today';
} else if (difference.inDays == 1) {
return 'Yesterday';
} else if (difference.inDays < 7) {
return '${difference.inDays} days ago';
} else {
return DateFormat('MMM dd, yyyy').format(dateTime);
}
}
/// Converts Unix timestamp to a short date format
static String unixToShortDate(int? unixTimestamp) {
if (unixTimestamp == null) {
return '';
}
int timestampInMs =
unixTimestamp > 1000000000000 ? unixTimestamp : unixTimestamp * 1000;
final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(
timestampInMs,
);
return DateFormat('MMM dd').format(dateTime);
}
/// Converts Unix timestamp to a full date and time format
static String unixToDateTime(int? unixTimestamp) {
if (unixTimestamp == null) {
return '';
}
int timestampInMs =
unixTimestamp > 1000000000000 ? unixTimestamp : unixTimestamp * 1000;
final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(
timestampInMs,
);
return DateFormat('MMM dd, yyyy HH:mm').format(dateTime);
}
/// Checks if a Unix timestamp is in the past
static bool isPast(int? unixTimestamp) {
if (unixTimestamp == null) {
return false;
}
int timestampInMs =
unixTimestamp > 1000000000000 ? unixTimestamp : unixTimestamp * 1000;
final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(
timestampInMs,
);
return dateTime.isBefore(DateTime.now());
}
/// Gets the number of days remaining until a Unix timestamp
static int daysRemaining(int? unixTimestamp) {
if (unixTimestamp == null) {
return 0;
}
int timestampInMs =
unixTimestamp > 1000000000000 ? unixTimestamp : unixTimestamp * 1000;
final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(
timestampInMs,
);
final DateTime now = DateTime.now();
final Duration difference = dateTime.difference(now);
return difference.inDays;
}
}