obis-spd-plugin/src/main/java/org/gcube/data/spd/obisplugin/util/DateUtil.java

85 lines
2.3 KiB
Java

/**
*
*/
package org.gcube.data.spd.obisplugin.util;
import java.util.Date;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
/**
* @author "Federico De Faveri defaveri@isti.cnr.it"
*
*/
public class DateUtil {
//Unsupported:
//2010-05-03T14:44:04Z+01:00
//2009-04-09TMountain Da:ylight Time
//2008-05-20T13:03:08OZ
//2008-11-01T14:45OZ
//0000-00-00 00:00:00
protected static final String[] DATE_FORMATS = new String[]{
"yyyy-MM-dd'T'HH:mm:ss.SSSZZ", //2005-10-24T13:33:11.000Z
"yyyy-MM-dd'T'HH:mm:ss:mm:ssZ", //2003-02-18T11:35:13:35:13Z
"yyyy-MM-dd' 'HH:mm:ss.SSSSSS", //2006-12-20 10:27:02.477563
"yyyy-MM-dd'T'HH:mm:ssZZ", //2001-02-10T12:00:00+00:00
"yyyy-MM-dd'T'HH:mm:sssZZ", //2011-09-25T11:00:000Z
"yyyy-MM-dd' 'HH:mm:ssZZ", //2007-05-11 14:01:15-04
"yyyy-MM-dd'T'HH:mm:ssz", //2005-10-11T15:40:00Z
"yyyy-MM-dd' 'HH:mm:ss", //2007-07-18 06:13:06
"yyyy-MM-dd'T'HH:mmZ", //2009-10-01T01:00Z
"MM/dd/yyyy' 'hh:mm:ss aa", //10/28/2010 10:12:43 AM
"MM/dd/yyyy' 'hh:mm", //12/9/2010 11:59
"dd/MM/yyyyHH:mm:ssZ", //13/9/201012:00:00Z
"yyyy-MM-dd' 'HH:mm", //2005-12-20 17:12
"yyyy-MM-dd'T'", //2010-06-09T
"yyyy-MM-dd-'T'", //2009-08-05-T
"yyyy-MM-dd", //2009-09-08
"dd-MMM-yy", //28-MAR-01 08-AUG-96
"dd/MM/yyyy", //11/2/2010
"MM/dd/yyyy' 'HH:mm:ss", //8/23/2010 0:00:00
"MM/dd/yyyy", //10/19/2010
"yyyy/MM/dd' 'HH:mm:ss", //2010/10/27 22:29:04
//FIXME Military Time Zone not supported
"yyyy-MM-dd'T'HH:mm:ss'B'", //2003-07-07T10:03:56B
};
protected static DateUtil instance;
public static DateUtil getInstance()
{
if (instance == null) {
instance = new DateUtil();
instance.initialize();
}
return instance;
}
protected DateTimeFormatter[] FORMATS;
protected DateUtil() {
FORMATS = new DateTimeFormatter[DATE_FORMATS.length];
}
protected void initialize()
{
int i = 0;
for (String dateFormat:DATE_FORMATS) {
FORMATS[i++] = DateTimeFormat.forPattern(dateFormat);
}
}
public Date parse(String dateString) {
for (DateTimeFormatter formatter:FORMATS) {
try {
return formatter.parseDateTime(dateString).toDate();
} catch (Exception e){}
}
return null; // Unknown format.
}
}