package com.henninghall.date_picker; import android.text.format.DateFormat; import android.text.format.DateUtils; import com.henninghall.date_picker.models.WheelType; import net.time4j.PrettyTime; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Locale; import java.util.TimeZone; public class Utils { public static boolean deviceUsesAmPm(){ return !DateFormat.is24HourFormat(DatePickerManager.context); } public static String printToday(Locale locale) { return PrettyTime.of(locale).printToday(); } public static Calendar isoToCalendar(String dateString, TimeZone timeZone) { if(dateString == null) return null; try { Calendar calendar = Calendar.getInstance(timeZone); calendar.setTime(getIsoUTCFormat().parse(dateString)); return calendar; } catch (ParseException e) { e.printStackTrace(); return null; } } public static String dateToIso(Calendar date) { return getIsoUTCFormat().format(date.getTime()); } public static boolean isToday(Calendar cal){ return DateUtils.isToday(cal.getTimeInMillis()); } public static Calendar getTruncatedCalendarOrNull(Calendar cal) { try { return org.apache.commons.lang3.time.DateUtils.truncate(cal, Calendar.MINUTE); } catch (Exception e){ return null; } } private static SimpleDateFormat getIsoUTCFormat(){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US); format.setTimeZone(TimeZone.getTimeZone("UTC")); return format; } public static ArrayList splitOnSpace(String value){ String[] array = value.split("\\s+"); ArrayList arrayList = new ArrayList<>(); Collections.addAll(arrayList, array); return arrayList; } public static String capitalize(String s){ return s.substring(0, 1).toUpperCase() + s.substring(1); } public static WheelType patternCharToWheelType(char patternChar) throws Exception { switch (patternChar){ case 'y': return WheelType.YEAR; case 'M': return WheelType.MONTH; case 'd': return WheelType.DATE; case 'h': case 'H': return WheelType.HOUR; case 'm': return WheelType.MINUTE; case 'a': return WheelType.AM_PM; default: throw new Exception("Invalid pattern char: " + patternChar); } } public static int getShortestScrollOption(int from, int to, final int maxValue, boolean isWrapping) { int size = maxValue + 1; int option1 = to - from; int option2 = option1 > 0 ? option1 - size : option1 + size; if (isWrapping) { return Math.abs(option1) < Math.abs(option2) ? option1 : option2; } if (from + option1 > maxValue) return option2; if (from + option1 < 0) return option2; return option1; } public static String getLocalisedStringFromResources(Locale locale, String tagName) { int selectedKey = DatePickerManager.context.getResources().getIdentifier(tagName,"string",DatePickerManager.context.getPackageName()); String localisedText = LocaleUtils.getLocaleStringResource(locale, selectedKey, DatePickerManager.context); return localisedText; } }