/* * The contents of this file are subject to the OpenMRS Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://license.openmrs.org * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ package org.openmrs.mobile.utilities; import android.annotation.SuppressLint; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; import org.openmrs.mobile.application.OpenMRS; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; public final class DateUtils { public static final String DEFAULT_DATE_FORMAT = "dd/MM/yyyy"; public static final String DATE_WITH_TIME_FORMAT = "dd/MM/yyyy HH:mm"; private static final String OPEN_MRS_RESPONSE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; public static final String OPEN_MRS_REQUEST_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; public static final String OPEN_MRS_REQUEST_PATIENT_FORMAT = "yyyy-MM-dd"; public static final Long ZERO = 0L; private DateUtils() { } public static String convertTime(long time, String dateFormat, TimeZone timeZone) { Date date = new Date(time); @SuppressLint("SimpleDateFormat") SimpleDateFormat format = new SimpleDateFormat(dateFormat); format.setTimeZone(timeZone); return format.format(date); } public static String convertTime(long time, String dateFormat) { return convertTime(time, dateFormat, TimeZone.getDefault()); } public static String convertTime(long timestamp, TimeZone timeZone) { return convertTime(timestamp, DEFAULT_DATE_FORMAT, timeZone); } public static String convertTime(long timestamp) { return convertTime(timestamp, DEFAULT_DATE_FORMAT, TimeZone.getDefault()); } public static Long convertTime(String dateAsString) { return convertTime(dateAsString, OPEN_MRS_RESPONSE_FORMAT); } public static Long convertTime(String dateAsString, String dateFormat) { Long time = null; if (StringUtils.notNull(dateAsString)) { DateFormat format = new SimpleDateFormat(dateFormat); Date formattedDate; try { formattedDate = parseString(dateAsString, format); time = formattedDate.getTime(); } catch (ParseException e) { try { formattedDate = parseString(dateAsString, new SimpleDateFormat(OPEN_MRS_REQUEST_PATIENT_FORMAT)); time = formattedDate.getTime(); } catch (ParseException e1) { OpenMRS.getInstance().getOpenMRSLogger().w("Failed to parse date :" + dateAsString + " caused by " + e.toString()); } } } return time; } private static Date parseString(String dateAsString, DateFormat format) throws ParseException { Date formattedDate = null; try { formattedDate = format.parse(dateAsString); } catch (NullPointerException e) { OpenMRS.getInstance().getOpenMRSLogger().w("Failed to parse date :" + dateAsString + " caused by " + e.toString()); } return formattedDate; } public static DateTime convertTimeString(String dateAsString) { DateTime date = null; if (StringUtils.notNull(dateAsString)) { DateTimeFormatter originalFormat = DateTimeFormat.forPattern(DateUtils.OPEN_MRS_REQUEST_FORMAT); date = originalFormat.parseDateTime(dateAsString); } return date; } public static String convertTime1(String dateAsString, String dateFormat) { if (StringUtils.notNull(dateAsString) && StringUtils.notEmpty(dateAsString)) { return convertTime(convertTime(dateAsString), dateFormat, TimeZone.getDefault()); } return dateAsString; } }