package co.smartreceipts.android.date;
import android.content.Context;
import android.support.annotation.NonNull;
import android.text.format.DateFormat;
import android.text.format.Time;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DateUtils {
public static final String DEFAULT_SEPARATOR = "/";
private static String separator;
private DateUtils() {
throw new RuntimeException("This class uses static calls only. It cannot be instantianted");
}
public static String getDateSeparator(Context context) {
if (separator == null) {
String dateString = DateFormat.getDateFormat(context).format(new java.util.Date());
Matcher matcher = Pattern.compile("[^\\w]").matcher(dateString);
if (!matcher.find()) {
separator = DEFAULT_SEPARATOR;
}
else {
separator = matcher.group(0);
}
}
return separator;
}
public static String getCurrentDateAsYYYY_MM_DDString() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd", Locale.getDefault());
return dateFormat.format(Calendar.getInstance().getTime());
}
public static boolean isToday(@NonNull Date date) {
// Build a calendar for the start of today
final Time now = new Time();
now.setToNow();
final Calendar startCalendar = Calendar.getInstance();
startCalendar.setTimeInMillis(now.toMillis(false));
startCalendar.setTimeZone(TimeZone.getDefault());
startCalendar.set(Calendar.HOUR_OF_DAY, 0);
startCalendar.set(Calendar.MINUTE, 0);
startCalendar.set(Calendar.SECOND, 0);
startCalendar.set(Calendar.MILLISECOND, 0);
// Build a calendar for the end date
final Calendar endCalendar = Calendar.getInstance();
endCalendar.setTimeInMillis(now.toMillis(false));
endCalendar.setTimeZone(TimeZone.getDefault());
endCalendar.set(Calendar.HOUR_OF_DAY, 23);
endCalendar.set(Calendar.MINUTE, 59);
endCalendar.set(Calendar.SECOND, 59);
endCalendar.set(Calendar.MILLISECOND, 999);
// Set the timers
final long startTime = startCalendar.getTimeInMillis();
final long endTime = endCalendar.getTimeInMillis();
final long testTime = date.getTime();
return startTime <= testTime && testTime <= endTime;
}
}