|
|
|
|
@ -1,7 +1,8 @@
|
|
|
|
|
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
|
|
|
|
|
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
|
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
|
import 'package:intl/intl.dart';
|
|
|
|
|
|
|
|
|
|
import 'package:timezone/timezone.dart' as tz;
|
|
|
|
|
class AppDateUtils {
|
|
|
|
|
static String convertDateToFormat(DateTime dateTime, String dateFormat) {
|
|
|
|
|
return DateFormat(dateFormat).format(dateTime);
|
|
|
|
|
@ -37,8 +38,58 @@ class AppDateUtils {
|
|
|
|
|
|
|
|
|
|
return DateFormat(dateFormat).format(date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static DateTime getDateTimeFromServerFormat(String str) {
|
|
|
|
|
if(ProjectViewModel.getVidaPlusStatus()){
|
|
|
|
|
return getDateTimeFromServerFormatForVida4(str);
|
|
|
|
|
}
|
|
|
|
|
return getDateTimeFromServerFormatForVida3(str);
|
|
|
|
|
}
|
|
|
|
|
static DateTime getDateTimeFromServerFormatForVida4(String str) {
|
|
|
|
|
DateTime date = DateTime.now();
|
|
|
|
|
const start = "/Date(";
|
|
|
|
|
|
|
|
|
|
const end = "+0300)";
|
|
|
|
|
if (str.contains("/Date")) {
|
|
|
|
|
final startIndex = str.indexOf(start);
|
|
|
|
|
|
|
|
|
|
final endIndex = str.indexOf(end, startIndex + start.length);
|
|
|
|
|
var epoch = int.parse(str.substring(startIndex + start.length, endIndex));
|
|
|
|
|
final riyadh = tz.getLocation('Asia/Riyadh');
|
|
|
|
|
final dateTime = tz.TZDateTime.fromMillisecondsSinceEpoch(riyadh, epoch);
|
|
|
|
|
// date = new DateTime.fromMillisecondsSinceEpoch(
|
|
|
|
|
// int.parse(str.substring(startIndex + start.length, endIndex), ), isUtc: true);
|
|
|
|
|
var dateString = DateFormat('yyyy-MM-dd HH:mm:ss').format(dateTime);
|
|
|
|
|
return DateTime.parse("${dateString}Z").toLocal();
|
|
|
|
|
} else {
|
|
|
|
|
if(str.contains("T")){
|
|
|
|
|
date = DateTime.parse("${str}").toLocal();
|
|
|
|
|
}else
|
|
|
|
|
date = DateTime.parse("${str}Z").toLocal();
|
|
|
|
|
}
|
|
|
|
|
return date;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static DateTime parseMicrosoftJsonDate(String jsonDate) {
|
|
|
|
|
// Remove /Date( and )/
|
|
|
|
|
RegExp regExp = RegExp(r'/Date\((\d+)([+-]\d{4})?\)/');
|
|
|
|
|
Match? match = regExp.firstMatch(jsonDate);
|
|
|
|
|
|
|
|
|
|
if (match == null) {
|
|
|
|
|
throw FormatException('Invalid Microsoft JSON date format: $jsonDate');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Extract timestamp in milliseconds
|
|
|
|
|
int timestamp = int.parse(match.group(1)!);
|
|
|
|
|
|
|
|
|
|
// Create UTC DateTime from timestamp
|
|
|
|
|
DateTime utcTime = DateTime.fromMillisecondsSinceEpoch(timestamp, isUtc: true);
|
|
|
|
|
|
|
|
|
|
// Convert to local timezone
|
|
|
|
|
return utcTime.toLocal();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static DateTime getDateTimeFromServerFormatForVida3(String str) {
|
|
|
|
|
DateTime date = DateTime.now();
|
|
|
|
|
const start = "/Date(";
|
|
|
|
|
|
|
|
|
|
@ -56,6 +107,24 @@ class AppDateUtils {
|
|
|
|
|
return date;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static DateTime parseDateTimeWithRiyadhTZ(String str) {
|
|
|
|
|
DateTime date = DateTime.now();
|
|
|
|
|
const start = "/Date(";
|
|
|
|
|
|
|
|
|
|
const end = "+0300)";
|
|
|
|
|
if (str.contains("/Date")) {
|
|
|
|
|
final startIndex = str.indexOf(start);
|
|
|
|
|
|
|
|
|
|
final endIndex = str.indexOf(end, startIndex + start.length);
|
|
|
|
|
final riyadh = tz.getLocation('Asia/Riyadh');
|
|
|
|
|
date = tz.TZDateTime.fromMillisecondsSinceEpoch(riyadh,
|
|
|
|
|
int.parse(str.substring(startIndex + start.length, endIndex)));
|
|
|
|
|
} else {
|
|
|
|
|
date = DateTime.parse(str);
|
|
|
|
|
}
|
|
|
|
|
return date;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static String differenceBetweenDateAndCurrentInYearMonthDay(
|
|
|
|
|
DateTime firstDate, BuildContext context) {
|
|
|
|
|
DateTime now = DateTime.now();
|
|
|
|
|
@ -328,7 +397,7 @@ class AppDateUtils {
|
|
|
|
|
/// get data formatted like 10:45 PM
|
|
|
|
|
/// [dateTime] convert DateTime to data formatted
|
|
|
|
|
static String getHour(DateTime dateTime) {
|
|
|
|
|
print("the time is ${DateFormat('hh:mm a').format(dateTime)}");
|
|
|
|
|
// print("the time is ${DateFormat('hh:mm a').format(dateTime)}");
|
|
|
|
|
return DateFormat('hh:mm a').format(dateTime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|