/*******************************************************************************
* Copyright (c) 2010 Denis Solonenko.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v2.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* Denis Solonenko - initial API and implementation
******************************************************************************/
package ru.orangesoftware.financisto2.datetime;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.content.Context;
import android.provider.Settings;
public class DateUtils {
public static final DateFormat FORMAT_TIMESTAMP_ISO_8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
public static final DateFormat FORMAT_DATE_ISO_8601 = new SimpleDateFormat("yyyy-MM-dd");
public static final DateFormat FORMAT_TIME_ISO_8601 = new SimpleDateFormat("HH:mm:ss");
public static final DateFormat FORMAT_DATE_RFC_2445 = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
public static Period getPeriod(PeriodType period) {
return period.calculatePeriod();
}
public static Calendar startOfDay(Calendar c) {
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c;
}
public static Calendar endOfDay(Calendar c) {
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
c.set(Calendar.MILLISECOND, 999);
return c;
}
public static long atMidnight(long date) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(date);
return startOfDay(c).getTimeInMillis();
}
public static long atDayEnd(long date) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(date);
return endOfDay(c).getTimeInMillis();
}
public static Date atDateAtTime(long now, Calendar startDate) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(now);
c.set(Calendar.HOUR_OF_DAY, startDate.get(Calendar.HOUR_OF_DAY));
c.set(Calendar.MINUTE, startDate.get(Calendar.MINUTE));
c.set(Calendar.SECOND, startDate.get(Calendar.SECOND));
c.set(Calendar.MILLISECOND, startDate.get(Calendar.MILLISECOND));
return c.getTime();
}
public static DateFormat getShortDateFormat(Context context) {
return android.text.format.DateFormat.getDateFormat(context);
}
public static DateFormat getLongDateFormat(Context context) {
return android.text.format.DateFormat.getLongDateFormat(context);
}
public static DateFormat getMediumDateFormat(Context context) {
return android.text.format.DateFormat.getMediumDateFormat(context);
}
public static DateFormat getTimeFormat(Context context) {
return android.text.format.DateFormat.getTimeFormat(context);
}
public static boolean is24HourFormat(Context context) {
return "24".equals(Settings.System.getString(context.getContentResolver(), Settings.System.TIME_12_24));
}
public static void zeroSeconds(Calendar dateTime) {
dateTime.set(Calendar.SECOND, 0);
dateTime.set(Calendar.MILLISECOND, 0);
}
}