You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

107 lines
3.5 KiB

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<String> splitOnSpace(String value){
String[] array = value.split("\\s+");
ArrayList<String> 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;
}
}