/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.search;
import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.MutableDateTime;
import org.joda.time.ReadableDateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;
public class ElasticSearchFormatter
{
public final static DateTimeFormatter ELASTICSEARCH_SIMPLE_DATE_FORMAT = DateTimeFormat.forPattern( "yyyy-MM-dd HH:mm" );
public final static DateTimeFormatter ELASTICSEARCH_FULL_DATE_FORMAT = DateTimeFormat.forPattern( "yyyy-MM-dd HH:mm:ss.SSS" );
public final static DateTimeFormatter ELASTICSEARCH_DATE_OPTIONAL_TIME_FORMAT = ISODateTimeFormat.dateOptionalTimeParser();
public static String formatDateAsStringIgnoreTimezone( final Date date )
{
return ELASTICSEARCH_SIMPLE_DATE_FORMAT.print( date.getTime() );
}
public static String formatDateAsStringIgnoreTimezone( final ReadableDateTime date )
{
return ELASTICSEARCH_SIMPLE_DATE_FORMAT.print( date );
}
public static String formatDateAsStringFull( final Date date )
{
return ELASTICSEARCH_FULL_DATE_FORMAT.print( date.getTime() );
}
public static ReadableDateTime toUTCTimeZone( final ReadableDateTime dateTime )
{
if ( DateTimeZone.UTC.equals( dateTime.getZone() ) )
{
return dateTime;
}
final MutableDateTime dateInUTC = dateTime.toMutableDateTime();
dateInUTC.setZone( DateTimeZone.UTC );
return dateInUTC.toDateTime();
}
public static DateTime parseStringAsElasticsearchDateOptionalTimeFormat( final String dateString )
{
try
{
return ELASTICSEARCH_DATE_OPTIONAL_TIME_FORMAT.parseDateTime( dateString );
}
catch ( IllegalArgumentException e )
{
return null;
}
}
}