You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
doctor_app_flutter/lib/util/date-utils.dart

454 lines
12 KiB
Dart

import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:flutter/cupertino.dart';
import 'package:intl/intl.dart';
class AppDateUtils {
static String convertDateToFormat(DateTime dateTime, String dateFormat) {
return DateFormat(dateFormat).format(dateTime);
}
static DateTime convertISOStringToDateTime(String date) {
DateTime newDate;
newDate = DateTime.parse(date);
return newDate;
}
static String convertStringToDateFormat(String date, String dateFormat) {
DateTime dateTime;
if (date.contains("/Date"))
dateTime = getDateTimeFromServerFormat(date);
else
dateTime = DateTime.parse(date);
return convertDateToFormat(dateTime, dateFormat);
}
static String convertToServerFormat(String date, String dateFormat){
return '/Date(${DateFormat(dateFormat).parse(date).millisecondsSinceEpoch})/';
}
static convertDateFromServerFormat(String str, dateFormat) {
var date = getDateTimeFromServerFormat(str);
return DateFormat(dateFormat).format(date);
}
static DateTime getDateTimeFromServerFormat(String str) {
DateTime date = DateTime.now();
if (str != null) {
5 years ago
const start = "/Date(";
5 years ago
const end = "+0300)";
if (str.contains("/Date")) {
final startIndex = str.indexOf(start);
final endIndex = str.indexOf(end, startIndex + start.length);
date = new DateTime.fromMillisecondsSinceEpoch(
int.parse(str.substring(startIndex + start.length, endIndex)));
} else {
date = DateTime.now();
}
} else {
date = DateTime.parse(str);
5 years ago
}
return date;
}
static String differenceBetweenDateAndCurrentInYearMonthDay(
DateTime firstDate, BuildContext context) {
DateTime now = DateTime.now();
// now = now.add(Duration(days: 400, minutes: 0));
var difference = firstDate.difference(now);
int years = now.year - firstDate.year;
int months = now.month - firstDate.month;
int days = now.day - firstDate.day;
if (months < 0 || (months == 0 && days < 0)) {
years--;
months += (days < 0 ? 11 : 12);
}
if (days < 0) {
final monthAgo = new DateTime(now.year, now.month - 1, firstDate.day);
days = now.difference(monthAgo).inDays + 1;
}
return "$days ${TranslationBase.of(context).days}, $months ${TranslationBase.of(context).months}, $years ${TranslationBase.of(context).years}";
}
static String differenceBetweenDateAndCurrent(
DateTime firstDate, BuildContext context,
{bool isShowSecond = false, bool isShowDays = true}) {
DateTime now = DateTime.now();
var difference = now.difference(firstDate);
int minutesInDays = difference.inMinutes;
5 years ago
int secondInDays = difference.inSeconds;
int hoursInDays =
minutesInDays ~/ 60; // ~/ : truncating division to make the result int
5 years ago
int second = secondInDays % 60;
int minutes = minutesInDays % 60;
int days = hoursInDays ~/ 24;
int hours = hoursInDays % 24;
double hoursInOneDay = difference.inHours / difference.inDays;
return (isShowDays
? (days > 0 ? "$days ${TranslationBase.of(context).days}," : '')
: "") +
(hours > 0 ? "$hours ${TranslationBase.of(context).hr}," : "") +
" $minutes ${TranslationBase.of(context).min}" +
(isShowSecond ? ", $second Sec" : "");
}
static String differenceBetweenServerDateAndCurrent(
String str, BuildContext context) {
const start = "/Date(";
const end = "+0300)";
final startIndex = str.indexOf(start);
final endIndex = str.indexOf(end, startIndex + start.length);
var date = new DateTime.fromMillisecondsSinceEpoch(
int.parse(str.substring(startIndex + start.length, endIndex)));
return differenceBetweenDateAndCurrent(date, context);
}
/// get month by
/// [weekDay] convert week day in int to week day name
static getWeekDay(int weekDay) {
switch (weekDay) {
case 1:
return "Monday";
case 2:
return "Tuesday";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return "Friday";
case 6:
return "Saturday ";
case 7:
return "Sunday";
}
}
/// get month by
/// [weekDay] convert week day in int to week day name arabic
static getWeekDayArabic(int weekDay) {
switch (weekDay) {
case 1:
return "الاثنين";
case 2:
return "الثلاثاء";
case 3:
return "الاربعاء";
case 4:
return "الخميس";
case 5:
return "الجمعه";
case 6:
return "السبت ";
case 7:
return "الاحد";
}
}
/// get month by
/// [month] convert month number in to month name
static getMonth(int month) {
switch (month) {
case 1:
return "January";
case 2:
return "February";
case 3:
return "March";
case 4:
return "April";
case 5:
return "May";
case 6:
return "June";
case 7:
return "July";
case 8:
return "August";
case 9:
return "September";
case 10:
return "October";
case 11:
return "November";
case 12:
return "December";
}
}
/// get month by
/// [month] convert month number in to month name in Arabic
static getMonthArabic(int month) {
switch (month) {
case 1:
return "يناير";
case 2:
return " فبراير";
case 3:
return "مارس";
case 4:
return "أبريل";
case 5:
return "مايو";
case 6:
return "يونيو";
case 7:
return "يوليو";
case 8:
return "أغسطس";
case 9:
return "سبتمبر";
case 10:
return " اكتوبر";
case 11:
return " نوفمبر";
case 12:
return "ديسمبر";
}
}
static getMonthByName(String month) {
switch (month.toLowerCase()) {
case 'january':
return 1;
case 'february':
return 2;
case 'march':
return 3;
case 'april':
return 4;
case 'may':
return 5;
case 'june':
return 6;
case 'july':
return 7;
case 'august':
return 8;
case 'september':
return 9;
case 'october':
return 10;
case 'november':
return 11;
case 'december':
return 12;
}
}
5 years ago
5 years ago
static DateTime convertStringToDate(String date) {
// /Date(1585774800000+0300)/
5 years ago
if (date != null) {
const start = "/Date(";
const end = "+0300)";
final startIndex = date.indexOf(start);
final endIndex = date.indexOf(end, startIndex + start.length);
5 years ago
DateTime newDate = DateTime.fromMillisecondsSinceEpoch(
int.parse(
date.substring(startIndex + start.length, endIndex),
),
);
5 years ago
return newDate;
} else
return DateTime.now();
}
/// get data formatted like Apr 26,2020
/// [dateTime] convert DateTime to data formatted Arabic
static String getMonthDayYearDateFormattedAr(DateTime dateTime) {
if (dateTime != null)
return getMonthArabic(dateTime.month) +
" " +
dateTime.day.toString() +
", " +
dateTime.year.toString();
else
return "";
}
/// get data formatted like Apr 26,2020
/// [dateTime] convert DateTime to data formatted
static String getMonthDayYearDateFormatted(DateTime dateTime,
{bool isArabic = false}) {
if (dateTime != null)
return isArabic
? getMonthArabic(dateTime.month)
: getMonth(dateTime.month) +
" " +
dateTime.day.toString() +
", " +
dateTime.year.toString();
else
return "";
}
/// get data formatted like 26 Apr 2020
/// [dateTime] convert DateTime to data formatted
static String getDayMonthYearDateFormatted(DateTime dateTime,
4 years ago
{bool isArabic = false, bool isMonthShort = false}) {
if (dateTime != null)
return dateTime.day.toString() +
" " +
4 years ago
"${isArabic ? getMonthArabic(dateTime.month) : isMonthShort ? getMonth(dateTime.month).toString().substring(0, 3) : getMonth(dateTime.month)}" +
" " +
dateTime.year.toString();
else
return "";
}
5 years ago
/// get data formatted like 26/4/2020
/// [dateTime] convert DateTime to data formatted
static String getDayMonthYearDate(DateTime dateTime,
{bool isArabic = false}) {
5 years ago
if (dateTime != null)
return dateTime.day.toString() +
"/" +
"${dateTime.month}" +
"/" +
dateTime.year.toString();
5 years ago
else
return "";
}
/// get data formatted like 10:45 PM
/// [dateTime] convert DateTime to data formatted
static String getHour(DateTime dateTime) {
return DateFormat('hh:mm a').format(dateTime);
}
static String getAgeByBirthday(String birthOfDate, BuildContext context,
{bool isServerFormat = true}) {
5 years ago
// https://leechy.dev/calculate-dates-diff-in-dart
DateTime birthDate;
if (birthOfDate.contains("/Date")) {
5 years ago
birthDate = AppDateUtils.getDateTimeFromServerFormat(birthOfDate);
} else {
5 years ago
birthDate = DateTime.parse(birthOfDate);
}
5 years ago
final now = DateTime.now();
5 years ago
int years = now.year - birthDate.year;
5 years ago
int months = now.month - birthDate.month;
int days = now.day - birthDate.day;
if (months < 0 || (months == 0 && days < 0)) {
years--;
months += (days < 0 ? 11 : 12);
}
if (days < 0) {
final monthAgo = new DateTime(now.year, now.month - 1, birthDate.day);
days = now.difference(monthAgo).inDays + 1;
}
5 years ago
return "$years ${TranslationBase.of(context).years} $months ${TranslationBase.of(context).months} $days ${TranslationBase.of(context).days}";
5 years ago
}
5 years ago
static bool isToday(DateTime dateTime) {
5 years ago
DateTime todayDate = DateTime.now().toUtc();
if (dateTime.day == todayDate.day &&
dateTime.month == todayDate.month &&
dateTime.year == todayDate.year) {
5 years ago
return true;
}
return false;
}
static String getDate(DateTime dateTime) {
print(dateTime);
if (dateTime != null)
return getMonth(dateTime.month) +
" " +
dateTime.day.toString() +
"," +
dateTime.year.toString();
else
return "";
}
static String getDateFormatted(DateTime dateTime) {
print(dateTime);
if (dateTime != null)
return dateTime.day.toString() +
"/" +
dateTime.month.toString() +
"/" +
dateTime.year.toString();
else
return "";
}
static String getTimeHHMMA(DateTime dateTime) {
return DateFormat('hh:mm a').format(dateTime);
}
static String getTimeHHMMA2(DateTime dateTime) {
5 years ago
return DateFormat('hh:mm').format(dateTime);
}
static String getStartTime(String dateTime) {
String time = dateTime;
5 years ago
if (dateTime.length > 7) time = dateTime.substring(0, 5);
5 years ago
return time;
}
static String getTimeFormated(DateTime dateTime) {
print(dateTime);
if (dateTime != null)
return dateTime.hour.toString() + ":" + dateTime.minute.toString();
else
return "";
}
// handel date like "09/05/2021 17:00"
static DateTime getDateTimeFromString(String str) {
List<String> array = str.split('/');
int day = int.parse(array[0]);
int month = int.parse(array[1]);
List<String> array2 = array[2].split(' ');
int year = int.parse(array2[0]);
String hour = array2[1];
List<String> hourList = hour.split(":");
DateTime date = DateTime(
year, month, day, int.parse(hourList[0]), int.parse(hourList[1]));
return date;
}
static convertDateFormatImproved(String str) {
String newDate ='';
const start = "/Date(";
if (str.isNotEmpty) {
const end = "+0300)";
final startIndex = str.indexOf(start);
final endIndex = str.indexOf(end, startIndex + start.length);
var date = new DateTime.fromMillisecondsSinceEpoch(
int.parse(str.substring(startIndex + start.length, endIndex)));
newDate = date.year.toString() +
"/" +
date.month.toString().padLeft(2, '0') +
"/" +
date.day.toString().padLeft(2, '0');
}
Merge branch 'development' of https://gitlab.com/Cloud_Solution/doctor_app_flutter into flutter_vervion_2_by_elham  Conflicts:  lib/client/base_app_client.dart  lib/config/localized_values.dart  lib/config/size_config.dart  lib/core/model/Prescriptions/prescription_report.dart  lib/core/model/Prescriptions/prescription_report_enh.dart  lib/core/model/auth/activation_Code_req_model.dart  lib/core/model/auth/activation_code_for_verification_screen_model.dart  lib/core/model/auth/check_activation_code_for_doctor_app_response_model.dart  lib/core/model/auth/check_activation_code_request_model.dart  lib/core/model/labs/lab_result.dart  lib/core/model/patient_muse/PatientSearchRequestModel.dart  lib/core/model/procedure/get_ordered_procedure_request_model.dart  lib/core/model/referral/MyReferralPatientModel.dart  lib/core/model/sick_leave/sick_leave_patient_model.dart  lib/core/model/sick_leave/sick_leave_patient_request_model.dart  lib/core/service/VideoCallService.dart  lib/core/service/base/base_service.dart  lib/core/service/home/scan_qr_service.dart  lib/core/service/patient/LiveCarePatientServices.dart  lib/core/service/patient/MyReferralPatientService.dart  lib/core/service/patient/patient-doctor-referral-service.dart  lib/core/service/patient_medical_file/lab_order/labs_service.dart  lib/core/service/patient_medical_file/medical_report/PatientMedicalReportService.dart  lib/core/service/patient_medical_file/prescription/prescriptions_service.dart  lib/core/service/patient_medical_file/procedure/procedure_service.dart  lib/core/service/patient_medical_file/radiology/radiology_service.dart  lib/core/service/patient_medical_file/sick_leave/sickleave_service.dart  lib/core/service/patient_medical_file/soap/SOAP_service.dart  lib/core/service/patient_medical_file/ucaf/patient-ucaf-service.dart  lib/core/viewModel/PatientSearchViewModel.dart  lib/core/viewModel/SOAP_view_model.dart  lib/core/viewModel/authentication_view_model.dart  lib/core/viewModel/base_view_model.dart  lib/core/viewModel/dashboard_view_model.dart  lib/core/viewModel/doctor_replay_view_model.dart  lib/core/viewModel/labs_view_model.dart  lib/core/viewModel/patient-referral-viewmodel.dart  lib/core/viewModel/patient-ucaf-viewmodel.dart  lib/core/viewModel/prescription_view_model.dart  lib/core/viewModel/prescriptions_view_model.dart  lib/core/viewModel/procedure_View_model.dart  lib/core/viewModel/sick_leave_view_model.dart  lib/models/SOAP/ChiefComplaint/GetChiefComplaintReqModel.dart  lib/models/SOAP/GetPhysicalExamReqModel.dart  lib/models/SOAP/my_selected_allergy.dart  lib/models/SOAP/my_selected_assement.dart  lib/models/SOAP/my_selected_examination.dart  lib/models/SOAP/my_selected_history.dart  lib/models/SOAP/post_chief_complaint_request_model.dart  lib/models/SOAP/post_physical_exam_request_model.dart  lib/models/doctor/list_gt_my_patients_question_model.dart  lib/models/doctor/profile_req_Model.dart  lib/models/doctor/replay/request_doctor_reply.dart  lib/models/livecare/start_call_res.dart  lib/models/patient/patiant_info_model.dart  lib/models/patient/progress_note_request.dart  lib/models/patient/vital_sign/vital_sign_req_model.dart  lib/models/pharmacies/pharmacies_items_request_model.dart  lib/screens/auth/verification_methods_screen.dart  lib/screens/doctor/doctor_repaly_chat.dart  lib/screens/doctor/doctor_replay/doctor_reply_widget.dart  lib/screens/doctor/doctor_reply_screen.dart  lib/screens/doctor/my_referral_patient_screen.dart  lib/screens/home/dashboard_swipe_widget.dart  lib/screens/home/home_patient_card.dart  lib/screens/home/home_screen.dart  lib/screens/live_care/end_call_screen.dart  lib/screens/live_care/live_care_patient_screen.dart  lib/screens/live_care/video_call.dart  lib/screens/medical-file/health_summary_page.dart  lib/screens/medicine/medicine_search_screen.dart  lib/screens/patients/DischargedPatientPage.dart  lib/screens/patients/InPatientPage.dart  lib/screens/patients/PatientsInPatientScreen.dart  lib/screens/patients/insurance_approval_screen_patient.dart  lib/screens/patients/out_patient/out_patient_screen.dart  lib/screens/patients/patient_search/patient_search_header.dart  lib/screens/patients/patient_search/patient_search_result_screen.dart  lib/screens/patients/patient_search/patient_search_screen.dart  lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart  lib/screens/patients/profile/UCAF/UCAF-input-screen.dart  lib/screens/patients/profile/UCAF/page-stepper-widget.dart  lib/screens/patients/profile/admission-request/admission-request-first-screen.dart  lib/screens/patients/profile/admission-request/admission-request-third-screen.dart  lib/screens/patients/profile/admission-request/admission-request_second-screen.dart  lib/screens/patients/profile/lab_result/FlowChartPage.dart  lib/screens/patients/profile/lab_result/LabResultWidget.dart  lib/screens/patients/profile/lab_result/laboratory_result_page.dart  lib/screens/patients/profile/lab_result/laboratory_result_widget.dart  lib/screens/patients/profile/lab_result/labs_home_page.dart  lib/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart  lib/screens/patients/profile/medical_report/MedicalReportPage.dart  lib/screens/patients/profile/notes/note/progress_note_screen.dart  lib/screens/patients/profile/profile_screen/patient_profile_screen.dart  lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart  lib/screens/patients/profile/profile_screen/profile_gird_for_other.dart  lib/screens/patients/profile/profile_screen/profile_gird_for_search.dart  lib/screens/patients/profile/radiology/radiology_details_page.dart  lib/screens/patients/profile/radiology/radiology_home_page.dart  lib/screens/patients/profile/referral/my-referral-detail-screen.dart  lib/screens/patients/profile/referral/my-referral-inpatient-screen.dart  lib/screens/patients/profile/referral/refer-patient-screen-in-patient.dart  lib/screens/patients/profile/referral/refer-patient-screen.dart  lib/screens/patients/profile/referral/referral_patient_detail_in-paint.dart  lib/screens/patients/profile/referral/referred-patient-screen.dart  lib/screens/patients/profile/referral/referred_patient_detail_in-paint.dart  lib/screens/patients/profile/soap_update/assessment/add_assessment_details.dart  lib/screens/patients/profile/soap_update/assessment/update_assessment_page.dart  lib/screens/patients/profile/soap_update/objective/add_examination_page.dart  lib/screens/patients/profile/soap_update/objective/add_examination_widget.dart  lib/screens/patients/profile/soap_update/objective/examination_item_card.dart  lib/screens/patients/profile/soap_update/objective/examinations_list_search_widget.dart  lib/screens/patients/profile/soap_update/objective/update_objective_page.dart  lib/screens/patients/profile/soap_update/plan/update_plan_page.dart  lib/screens/patients/profile/soap_update/shared_soap_widgets/SOAP_open_items.dart  lib/screens/patients/profile/soap_update/shared_soap_widgets/SOAP_step_header.dart  lib/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart  lib/screens/patients/profile/soap_update/shared_soap_widgets/expandable_SOAP_widget.dart  lib/screens/patients/profile/soap_update/shared_soap_widgets/steps_widget.dart  lib/screens/patients/profile/soap_update/subjective/allergies/add_allergies.dart  lib/screens/patients/profile/soap_update/subjective/allergies/update_allergies_widget.dart  lib/screens/patients/profile/soap_update/subjective/history/add_history_dialog.dart  lib/screens/patients/profile/soap_update/subjective/history/priority_bar.dart  lib/screens/patients/profile/soap_update/subjective/history/update_history_widget.dart  lib/screens/patients/profile/soap_update/subjective/medication/add_medication.dart  lib/screens/patients/profile/soap_update/subjective/update_subjective_page.dart  lib/screens/patients/profile/soap_update/update_soap_index.dart  lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart  lib/screens/prescription/add_prescription_form.dart  lib/screens/prescription/prescription_item_in_patient_page.dart  lib/screens/prescription/prescription_text_filed.dart  lib/screens/prescription/prescriptions_page.dart  lib/screens/procedures/ProcedureCard.dart  lib/screens/procedures/add-favourite-procedure.dart  lib/screens/procedures/procedure_checkout_screen.dart  lib/screens/procedures/procedure_screen.dart  lib/screens/reschedule-leaves/add-rescheduleleave.dart  lib/screens/reschedule-leaves/reschedule_leave.dart  lib/screens/sick-leave/add-sickleave.dart  lib/screens/sick-leave/show-sickleave.dart  lib/screens/sick-leave/sick_leave.dart  lib/util/VideoChannel.dart  lib/util/date-utils.dart  lib/util/translations_delegate_base.dart  lib/widgets/patients/patient-referral-item-widget.dart  lib/widgets/patients/patient_card/PatientCard.dart  lib/widgets/patients/profile/PatientProfileButton.dart  lib/widgets/patients/profile/patient-profile-app-bar.dart  lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart  lib/widgets/patients/profile/profile-welcome-widget.dart  lib/widgets/patients/profile/profile_medical_info_widget.dart  lib/widgets/patients/profile/profile_medical_info_widget_search.dart  lib/widgets/patients/profile/profile_status_info_widget.dart  lib/widgets/shared/app_texts_widget.dart  lib/widgets/shared/bottom_nav_bar.dart  lib/widgets/shared/bottom_navigation_item.dart  lib/widgets/shared/buttons/app_buttons_widget.dart  lib/widgets/shared/card_with_bg_widget.dart  lib/widgets/shared/dialogs/dailog-list-select.dart  lib/widgets/shared/dialogs/master_key_dailog.dart  lib/widgets/shared/doctor_card.dart  lib/widgets/shared/doctor_card_insurance.dart  lib/widgets/shared/master_key_checkbox_search_allergies_widget.dart  lib/widgets/shared/master_key_checkbox_search_widget.dart  lib/widgets/shared/rounded_container_widget.dart  lib/widgets/shared/text_fields/app-textfield-custom.dart  lib/widgets/shared/text_fields/text_fields_utils.dart  lib/widgets/shared/user-guid/custom_validation_error.dart  lib/widgets/transitions/fade_page.dart  lib/widgets/transitions/slide_up_page.dart  pubspec.lock  pubspec.yaml
4 years ago
return newDate ;
}
}