/*******************************************************************************
* Copyright 2008 Mjrz.net
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
/**
* @author Mjrz contact@mjrz.net
*
*/
public class DateUtils {
public static final String FORMAT_YYYYMMDD = "yyyy-MM-dd";
public static final String FORMAT_YYYYMMDD_SLASHES = "yyyy/MM/dd";
public static final String GENERIC_DISPLAY_FORMAT = "E, dd MMM yyyy";
public static final String TIME_DISPLAY_FORMAT = "HH mm ss";
public static final int LAST_WEEK = 1;
public static final int LAST_MONTH = 2;
public static final String formatDate(Date dt, String format) {
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(dt);
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(format);
sdf.setTimeZone(TimeZone.getDefault());
return (sdf.format(cal.getTime()));
}
public static final String getCurrentDate(String format) {
Calendar cal = Calendar.getInstance(TimeZone.getDefault());
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(format);
sdf.setTimeZone(TimeZone.getDefault());
return (sdf.format(cal.getTime()));
}
public static final String dateToString(Date dt, String dateformat) {
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(dt);
StringBuffer ret = new StringBuffer();
String separator = new String();
if(dateformat.equals(DateUtils.FORMAT_YYYYMMDD) ) {
separator = "-";
}
if(dateformat.equals(DateUtils.FORMAT_YYYYMMDD_SLASHES) ) {
separator = "/";
}
ret.append(cal.get(Calendar.YEAR));
ret.append(separator);
ret.append(cal.get(Calendar.MONTH) + 1);
ret.append(separator);
ret.append(cal.get(Calendar.DATE));
return ret.toString();
}
public static final String dateToString(Date dt, String tzString, String dateformat) {
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(dt);
cal.setTimeZone(TimeZone.getTimeZone(tzString));
StringBuffer ret = new StringBuffer();
String separator = new String();
if(dateformat.equals(DateUtils.FORMAT_YYYYMMDD) ) {
separator = "-";
}
if(dateformat.equals(DateUtils.FORMAT_YYYYMMDD_SLASHES) ) {
separator = "/";
}
ret.append(cal.get(Calendar.YEAR));
ret.append(separator);
ret.append(cal.get(Calendar.MONTH) + 1);
ret.append(separator);
ret.append(cal.get(Calendar.DATE));
return ret.toString();
}
public static final String getTimeFromDate(Date dt) {
Calendar cal = new GregorianCalendar();
cal.setTime(dt);
StringBuffer ret = new StringBuffer();
ret.append(cal.get(Calendar.HOUR));
ret.append(":");
ret.append(cal.get(Calendar.MINUTE));
return ret.toString();
}
public static final String getTimeFromDate(Date dt, String tzString) {
try {
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(dt);
gc.setTimeZone(TimeZone.getTimeZone(tzString));
StringBuffer ret = new StringBuffer();
ret.append(gc.get(Calendar.HOUR));
ret.append(":");
ret.append(gc.get(Calendar.MINUTE));
ret.append(" ");
if(gc.get(Calendar.AM_PM) == 0) {
ret.append("AM");
}
else {
ret.append("PM");
}
return ret.toString();
}
catch(Exception e) {
return "";
}
}
public static final String getDateTimeFromDate(Date dt, String tzString) {
try {
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(dt);
gc.setTimeZone(TimeZone.getTimeZone(tzString));
StringBuffer ret = new StringBuffer();
ret.append(gc.get(Calendar.YEAR));
ret.append("-");
ret.append(gc.get(Calendar.MONTH) - 1);
ret.append("-");
ret.append(gc.get(Calendar.DATE));
ret.append(" ");
ret.append(gc.get(Calendar.HOUR));
ret.append(":");
ret.append(gc.get(Calendar.MINUTE));
ret.append(" ");
if(gc.get(Calendar.AM_PM) == 0) {
ret.append("AM");
}
else {
ret.append("PM");
}
return ret.toString();
}
catch(Exception e) {
return "";
}
}
public static final String calendarToString(Calendar cal, String dateformat) {
StringBuffer ret = new StringBuffer();
if(dateformat.equals(FORMAT_YYYYMMDD) ) {
ret.append(cal.get(Calendar.YEAR));
ret.append("-");
String month = null;
int mo = cal.get(Calendar.MONTH) + 1; /* Calendar month is zero indexed, string months are not */
if(mo < 10) {
month = "0" + mo;
}
else {
month = "" + mo;
}
ret.append(month);
ret.append("-");
String date = null;
int dt = cal.get(Calendar.DATE);
if(dt < 10) {
date = "0" + dt;
}
else {
date = "" + dt;
}
ret.append(date);
}
return ret.toString();
}
public static final GregorianCalendar getCurrentCalendar(String utimezonestring) {
try {
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeZone(TimeZone.getTimeZone(utimezonestring));
return gc;
}
catch(Exception e) {
//If exception, return server TimeStamp
return new GregorianCalendar();
}
}
public static String[] getDateRange(int cmd) {
GregorianCalendar gc = new GregorianCalendar();
GregorianCalendar gc2 = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //$NON-NLS-1$
String ret[] = new String[2];
ret[1] = sdf.format(gc.getTime());
if(cmd == LAST_WEEK) {
for(int i = 0; i < 7; i++) {
gc2.add(Calendar.DATE, -1);
}
}
if(cmd == LAST_MONTH) {
gc2.add(Calendar.MONTH, -1);
}
ret[0] = sdf.format(gc2.getTime());
return ret;
}
public static final String getDayString(int day) {
switch (day) {
case Calendar.SUNDAY:
return "SUNDAY";
case Calendar.MONDAY:
return "MONDAY";
case Calendar.TUESDAY:
return "TUESDAY";
case Calendar.WEDNESDAY:
return "WEDNESDAY";
case Calendar.THURSDAY:
return "THURSDAY";
case Calendar.FRIDAY:
return "FRIDAY";
case Calendar.SATURDAY:
return "SATURDAY";
}
return "";
}
}