didvan-app/lib/utils/date_time.dart

84 lines
2.4 KiB
Dart

import 'package:didvan/config/design_config.dart';
import 'package:flutter/material.dart';
import 'package:persian_datetime_picker/persian_datetime_picker.dart';
class DateTimeUtils {
static TimeOfDay stringToTimeOfDay(String input) => TimeOfDay(
hour: int.parse(input.split(':')[0]),
minute: int.parse(input.split(':')[1]),
);
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';
}
static Future<String?> showDatePicker({
String? initialDate,
String? startDate,
String? endDate,
}) async {
final initDate = initialDate == null ? null : DateTime.parse(initialDate);
final initialJalali = Jalali.fromDateTime(initDate ?? DateTime.now());
final firstDate = Jalali.fromDateTime(
startDate == null ? DateTime(2021) : DateTime.parse(startDate),
);
final lastDate = Jalali.fromDateTime(
endDate == null ? DateTime.now() : DateTime.parse(endDate),
);
final Jalali? result = await showPersianDatePicker(
context: DesignConfig.context,
initialDate: initialJalali,
firstDate: firstDate,
lastDate: lastDate,
);
return result?.toDateTime().toString();
}
static String momentGenerator(String input) {
final date = DateTime.parse(input);
final int seconds = (DateTime.now().difference(date).inSeconds).floor();
double interval = seconds / 31536000;
if (interval > 1) {
return interval.floor().toString() + " سال پیش";
}
interval = seconds / 2592000;
if (interval > 1) {
return interval.floor().toString() + " ماه پیش";
}
interval = seconds / 86400;
if (interval > 1) {
return interval.floor().toString() + " روز پیش";
}
interval = seconds / 3600;
if (interval > 1) {
return interval.floor().toString() + " ساعت پیش";
}
interval = seconds / 60;
if (interval > 1) {
return interval.floor().toString() + " دقیقه پیش";
}
return 'هم اکنون';
// return seconds.floor().toString() + " ثانیه پیش";
}
}