This repository has been archived on 2024-05-07. You can view files and clone it, but cannot push or open issues or pull requests.
species-discovery/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/util/DateUtil.java

254 lines
5.2 KiB
Java

package org.gcube.portlets.user.speciesdiscovery.server.util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import org.apache.log4j.Logger;
import org.gcube.portlets.user.speciesdiscovery.client.ConstantsSpeciesDiscovery;
import org.joda.time.DateTime;
import org.joda.time.Days;
/**
* The Class DateUtil.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Feb 10, 2017
*/
public class DateUtil {
/**
* The Enum TIMETYPE.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Feb 10, 2017
*/
public static enum TIMETYPE{DAYS, HOURS, MINUTES, SECONDS};
public static Logger logger = Logger.getLogger(DateUtil.class);
public static final String DATE_TIME_FORMAT = "yyyy.MM.dd 'at' HH:mm:ss";
public static final String DATE_TIME_FORMAT_2 = "dd-MM, yyyy HH:mm:ss z";
/**
* To date.
*
* @param calendar the calendar
* @return the date
*/
public static Date toDate(Calendar calendar)
{
if (calendar == null) return new Date(0);
return calendar.getTime();
}
/**
* To date format to string.
*
* @param calendar the calendar
* @return the string
*/
public static String toDateFormatToString(Calendar calendar){
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_TIME_FORMAT);
Date resultdate = getDate(calendar);
return dateFormat.format(resultdate);
}
/**
* To date format.
*
* @param calendar the calendar
* @return the date
*/
public static Date toDateFormat(Calendar calendar){
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_TIME_FORMAT);
Date resultdate = getDate(calendar);
try {
resultdate = dateFormat.parse(dateFormat.format(resultdate));
} catch (ParseException e) {
logger.error(e.getMessage());
resultdate = new Date(0);
}
return resultdate;
}
/**
* Gets the date format.
*
* @param calendar the calendar
* @return the date format
*/
public static Date getDateFormat(Calendar calendar){
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_TIME_FORMAT);
Date resultdate = null;
if (calendar == null)
resultdate = new Date(0);
else
resultdate = getDate(calendar);
try {
resultdate = dateFormat.parse(dateFormat.format(resultdate));
} catch (ParseException e) {
logger.error(e.getMessage());
resultdate = new Date(0);
}
return resultdate;
}
/**
* Gets the date.
*
* @param calendar the calendar
* @return the date
*/
public static Date getDate(Calendar calendar) {
Date resultdate = null;
if (calendar == null)
resultdate = new Date(0);
else
resultdate = new Date(calendar.getTimeInMillis());
return resultdate;
}
/**
* String to date format.
*
* @param date the date
* @return the date
*/
public static Date stringToDateFormat(String date){
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_TIME_FORMAT);
Date resultdate = null;
try {
resultdate = dateFormat.parse(date);
} catch (ParseException e) {
logger.error(e.getMessage());
resultdate = new Date(0);
}
return resultdate;
}
/**
* Date to date format string.
*
* @param date the date
* @return the string
*/
public static String dateToDateFormatString(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_TIME_FORMAT);
String dateString = null;
if(date!=null)
dateString = dateFormat.format(date);
else
dateString = dateFormat.format(new Date(0));
return dateString;
}
/**
* Milliseconds to date.
*
* @param milliseconds the milliseconds
* @return the date
*/
public static Date millisecondsToDate(long milliseconds){
Date date = null;
try {
date= new Date(milliseconds);
} catch (Exception e) {
logger.error(e.getMessage());
date = new Date(0);
}
return date;
}
/**
* Gets the difference.
*
* @param date1 the date1
* @param date2 the date2
* @param timeType the time type
* @return the difference
*/
public static long getDifference(long date1, long date2, TIMETYPE timeType){
// Calculates the difference in milliseconds.
long millisDiff = date2 - date1;
switch (timeType) {
case DAYS: return millisDiff / 86400000;
case HOURS: return millisDiff / 3600000 % 24;
case MINUTES: return millisDiff / 60000 % 60;
case SECONDS: return millisDiff / 1000 % 60;
default:
return millisDiff / 1000 % 60;
}
}
/**
* Gets the difference.
*
* @param date1 the date1
* @param date2 the date2
* @return difference between two date in this format: N°day/days HH:mm:ss
*/
public static String getDifference(long date1, long date2){
long millisDiff = date2 - date1;
// System.out.println("millisDiff: "+millisDiff);
Date date = new Date(millisDiff);
DateFormat outFormat = new SimpleDateFormat(ConstantsSpeciesDiscovery.TIMEFORMAT_HH_MM_SS);
outFormat.setTimeZone(TimeZone.getTimeZone(ConstantsSpeciesDiscovery.TIME_ZONE_UTC));
int days = Days.daysBetween(new DateTime(date1), new DateTime(date2)).getDays();
if(days>0){
String hours = outFormat.format(date);
return days==1?days + " Day, "+hours:days + " Days, "+hours;
}
else
return outFormat.format(date);
}
}