package org.openstack.atlas.util.converters; import org.openstack.atlas.util.common.exceptions.ConverterException; import java.util.Calendar; import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.format.ISODateTimeFormat; public class DateTimeConverters { private static final Pattern tzPattern = Pattern.compile(".*(\\+|\\-)([0-9][0-9]:[0-9][0-9])$"); public static Calendar isoTocalNoExc(String isoStr) { Calendar cal = null; try{ cal = isoTocal(isoStr); }catch(ConverterException ex) { return null; } return cal; } public static Calendar isoTocal(String isoStr) throws ConverterException { Calendar out; Matcher tzMatcher; String tzStr; DateTimeZone dtZone; if(isoStr == null){ throw new ConverterException(new NullPointerException()); } try { tzMatcher = tzPattern.matcher(isoStr); if(tzMatcher.find()) { tzStr = String.format("%s%s",tzMatcher.group(1),tzMatcher.group(2)); dtZone = DateTimeZone.forID(tzStr); }else{ dtZone = DateTimeZone.UTC; } DateTime dateTime = new DateTime(isoStr,dtZone); out = dateTime.toCalendar(Locale.ROOT); } catch (Exception ex) { throw new ConverterException(ex); } return out; } public static String calToiso(Calendar cal) throws ConverterException { String out; String msg; try { DateTime dateTime = new DateTime(cal); out = ISODateTimeFormat.dateTimeNoMillis().print(dateTime); } catch (Exception ex) { throw new ConverterException(ex); } return out; } public static String calToisoNoExc(Calendar cal) { String isoStr= null; try{ isoStr = calToiso(cal); }catch(ConverterException ex) { return null; } return isoStr; } }