package org.ovirt.engine.core.compat;
import java.text.DateFormat;
import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateTime extends Date {
private static final String[] dayNames = new DateFormatSymbols().getWeekdays();
public DateTime() {
this(getMinValue());
}
public DateTime(Date argvalue) {
super(argvalue.getTime());
}
public DateTime(long millis) {
super(millis);
}
/**
* This method resets the datetime object to 00:00:00.000 on the same date
*/
public DateTime resetToMidnight() {
Calendar cal = Calendar.getInstance();
cal.setTime(this);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return new DateTime(cal.getTime());
}
public DayOfWeek getDayOfWeek() {
return DayOfWeek.forValue(this.getDay());
}
public String toString(DateFormat dateFormat) {
return dateFormat.format(this);
}
public Date addSeconds(int i) {
Calendar cal = Calendar.getInstance();
cal.setTime(this);
cal.add(Calendar.SECOND, i);
return cal.getTime();
}
public DateTime addDays(int i) {
Calendar cal = Calendar.getInstance();
cal.setTime(this);
cal.add(Calendar.DATE, i);
return new DateTime(cal.getTime());
}
public TimeSpan subtract(Date date) {
long span = this.getTime() - date.getTime();
return new TimeSpan(span);
}
/**
* The Min Date in java
*
* @return - a date representing - Thu Jan 01 00:00:00 IST 1970
*/
public static Date getMinValue() {
GregorianCalendar javaEpochTime = new GregorianCalendar();
javaEpochTime.clear();
return javaEpochTime.getTime();
}
public static DateTime getNow() {
return new DateTime(System.currentTimeMillis());
}
public Date addMinutes(int i) {
Calendar cal = Calendar.getInstance();
cal.setTime(this);
cal.add(Calendar.MINUTE, i);
return new DateTime(cal.getTime());
}
public static String getDayOfTheWeekAsString(int dayOfTheWeek) {
return dayNames[dayOfTheWeek];
}
}