Houshan-Basa/lib/core/utils/date_time.dart

190 lines
5.5 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/foundation.dart';
import 'package:intl/intl.dart';
import 'package:shamsi_date/shamsi_date.dart';
class DateTimeUtils {
static DateTime getNow() {
try {
DateTime nowUtc = DateTime.now().toUtc();
return nowUtc.add(const Duration(hours: 3, minutes: 30));
} catch (e) {
// Handle the exception
if (kDebugMode) {
print('Error in getNow: $e');
}
return DateTime.now();
}
}
static Jalali getNowJalali() {
return Jalali.now();
}
static String getTimeFromDuration(int seconds) {
try {
final time = Duration(seconds: seconds);
final min = time.inMinutes.toString().padLeft(2, '0');
final sec = (time.inSeconds % 60).toString().padLeft(2, '0');
return '$min:$sec';
} catch (e) {
// Handle the exception
if (kDebugMode) {
print('Error in getTimeFromDuration: $e');
}
return '00:00'; // Return a default value
}
}
static String getFormattedTimeFromSeconds(int seconds) {
try {
if (seconds >= 3600) {
final hours = (seconds ~/ 3600).toString();
final minutes = ((seconds % 3600) ~/ 60).toString().padLeft(2, '0');
return '$hours:$minutes ساعت';
} else if (seconds >= 60) {
final minutes = (seconds ~/ 60).toString();
return '$minutes دقیقه';
} else {
return '$seconds ثانیه';
}
} catch (e) {
if (kDebugMode) {
print('Error in getFormattedTimeFromSeconds: $e');
}
return '0 ثانیه'; // Default fallback
}
}
static DateTime convertStringIsoToDate(String isoDate) {
try {
DateTime dateTime = DateTime.parse(isoDate);
DateTime iranTime = dateTime.add(const Duration(hours: 3, minutes: 30));
return iranTime;
} catch (e) {
// Handle the exception
if (kDebugMode) {
print('Error in convertStringIsoToDate: $e');
}
return DateTime.now(); // Return current time as a fallback
}
}
static String convertDateToStringInFormatted(DateTime date,
{final String? formatted}) {
try {
String formattedDate =
DateFormat(formatted ?? 'yyyy-MM-dd kk:mm').format(date);
return formattedDate;
} catch (e) {
// Handle the exception
if (kDebugMode) {
print('Error in convertDateToStringInFormatted: $e');
}
return ''; // Return a default value
}
}
static String convertStringIsoToStringInFormatted(
String isoDate,
) {
try {
DateTime dateTime = convertStringIsoToDate(isoDate).toUtc()
..add(const Duration(hours: 3, minutes: 30));
final persianDate = Jalali.fromDateTime(dateTime);
return '${persianDate.year.toString().padLeft(2, '0')}-${persianDate.month.toString().padLeft(2, '0')}-${persianDate.day.toString().padLeft(2, '0')} - ${persianDate.hour.toString().padLeft(2, '0')}:${persianDate.minute.toString().padLeft(2, '0')} ';
} catch (e) {
// Handle the exception
if (kDebugMode) {
print('Error in convertStringIsoToStringInFormatted: $e');
}
return ''; // Return a default value
}
}
static String convertToSentTime(String isoDate) {
try {
final date = convertStringIsoToDate(isoDate);
final min = date.minute.toString().padLeft(2, '0');
final hour = (date.hour % 60).toString().padLeft(2, '0');
return '$hour:$min';
} catch (e) {
// Handle the exception
if (kDebugMode) {
print('Error in convertToSentTime: $e');
}
return '00:00'; // Return a default value
}
}
static int getDaysBetweenNowAnd(String targetDateIso) {
try {
DateTime now = getNow();
final targetDate = convertStringIsoToDate(targetDateIso);
Duration difference = now.difference(targetDate);
return difference.inDays;
} catch (e) {
// Handle the exception
if (kDebugMode) {
print('Error in getDaysBetweenNowAnd: $e');
}
return 0; // Return a default value
}
}
static int getDaysBetweenTwoDate(String firstDateIso, String targetDateIso) {
try {
DateTime now = convertStringIsoToDate(firstDateIso);
final targetDate = convertStringIsoToDate(targetDateIso);
Duration difference = now.difference(targetDate);
return difference.inDays;
} catch (e) {
// Handle the exception
if (kDebugMode) {
print('Error in getDaysBetweenNowAnd: $e');
}
return 0; // Return a default value
}
}
static Jalali getDateFromString(final bool isTime, final String date) {
try {
if (isTime) {
final d = getNow();
return Jalali.fromDateTime(d).copy(hour: int.tryParse(date));
} else {
final d = date.split('-');
final dateInMiladi = DateTime(int.tryParse(d[0])!)
.copyWith(month: int.tryParse(d[1]), day: int.tryParse(d[2]));
final persianDate = Jalali.fromDateTime(dateInMiladi);
return persianDate;
}
} catch (e) {
// Handle the exception
if (kDebugMode) {
print('Error in getDaysBetweenNowAnd: $e');
}
final d = getNow();
return Jalali.fromDateTime(d);
}
}
static String normalizeTimeDuration(Duration input) {
String minute;
String second;
if (input.inMinutes < 10) {
minute = '0${input.inMinutes}';
} else {
minute = input.inMinutes.toString();
}
int realSeconds = input.inSeconds % 60;
if (realSeconds < 10) {
second = '0$realSeconds';
} else {
second = (realSeconds).toString();
}
return '$minute:$second';
}
}