Android Open Source - msf-spaces-sdk-android Date To Xsd Datetime Formatter






From Project

Back to project page msf-spaces-sdk-android.

License

The source code is released under:

Apache License

If you think the Android project msf-spaces-sdk-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package de.imc.mirror.sdk.android.utils;
/*  ww w. j a v  a2 s  .c  o m*/
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class DateToXsdDatetimeFormatter {
  private static final DateFormat ISO8061_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
  private static final DateFormat ISO8061_FORMAT_WITHOUT_TIMEZONE = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");

    public DateToXsdDatetimeFormatter () {}

    /**
     * Creates a new DateToXsdDatetimFormatter, which uses the given timezone.
     * @param timeZone The timezone to use.
     */
    public DateToXsdDatetimeFormatter (TimeZone timeZone)  {
      ISO8061_FORMAT.setTimeZone(timeZone);
      ISO8061_FORMAT_WITHOUT_TIMEZONE.setTimeZone(timeZone);
    }

    /**
     * Parses a xmldatestring to a dateobject. If no milliseconds are set, these will be set to 0.
     * If no timezone identifier is given, the set timezone will be used.
     * @param xmlDateTime The xmldatestring to be parsed.
     * @return The parsed date.
     * @throws ParseException Thrown if the given string cannot be parsed.
     */
    public synchronized Date parse(String xmlDateTime) throws ParseException  {
      if (xmlDateTime.length() < 19){
        throw new ParseException("The given date cannot be in the right format.", 0);
      }
      int milliSeconds = xmlDateTime.lastIndexOf(".");
      int timeZoneIndex = xmlDateTime.lastIndexOf("+");
      if (timeZoneIndex == -1) {
        timeZoneIndex = xmlDateTime.lastIndexOf("-") < 10 ? -1 : xmlDateTime.lastIndexOf("-");
      }
      if (milliSeconds == 18 || timeZoneIndex == 18) {
        throw new ParseException("The given date cannot be in the right format.", 0);
      }
      if (milliSeconds == -1){
            StringBuilder sb = new StringBuilder(xmlDateTime);
            sb.insert(19, ".0");
            xmlDateTime = sb.toString();
      }
      int colonIndex = xmlDateTime.lastIndexOf(":");
      if (colonIndex <= 16) {
            return ISO8061_FORMAT_WITHOUT_TIMEZONE.parse(xmlDateTime);
      }
        StringBuilder sb = new StringBuilder(xmlDateTime);
        sb.deleteCharAt(colonIndex);
        return ISO8061_FORMAT.parse(sb.toString());
    }

    /**
     * Formats a date to a ISO8061 formatted string.
     * @param xmlDateTime The date to format.
     * @return The formatted string.
     */
    public synchronized String format(Date xmlDateTime) {
        String s =  ISO8061_FORMAT.format(xmlDateTime);
        StringBuilder sb = new StringBuilder(s);
        sb.insert(26, ':');
        return sb.toString();
    }

    /**
     * Sets a new timezone used to format a date.
     * @param timezone The timezone to use.
     */
    public synchronized void setTimeZone(String timezone)  {
      ISO8061_FORMAT.setTimeZone(TimeZone.getTimeZone(timezone));
      ISO8061_FORMAT_WITHOUT_TIMEZONE.setTimeZone(TimeZone.getTimeZone(timezone));
    }
}




Java Source Code List

de.imc.mirror.sdk.android.CDMDataBuilder.java
de.imc.mirror.sdk.android.CDMData.java
de.imc.mirror.sdk.android.CommandType.java
de.imc.mirror.sdk.android.ConnectionConfigurationBuilder.java
de.imc.mirror.sdk.android.ConnectionConfiguration.java
de.imc.mirror.sdk.android.ConnectionHandler.java
de.imc.mirror.sdk.android.DataHandler.java
de.imc.mirror.sdk.android.DataModel.java
de.imc.mirror.sdk.android.DataObjectBuilder.java
de.imc.mirror.sdk.android.DataObject.java
de.imc.mirror.sdk.android.DataWrapper.java
de.imc.mirror.sdk.android.NetworkInformation.java
de.imc.mirror.sdk.android.OrgaSpace.java
de.imc.mirror.sdk.android.PrivateSpace.java
de.imc.mirror.sdk.android.ProviderInitializer.java
de.imc.mirror.sdk.android.RequestFuture.java
de.imc.mirror.sdk.android.SpaceChannel.java
de.imc.mirror.sdk.android.SpaceConfiguration.java
de.imc.mirror.sdk.android.SpaceHandler.java
de.imc.mirror.sdk.android.SpaceMember.java
de.imc.mirror.sdk.android.Space.java
de.imc.mirror.sdk.android.SpacesProvider.java
de.imc.mirror.sdk.android.TeamSpace.java
de.imc.mirror.sdk.android.UserInfo.java
de.imc.mirror.sdk.android.cdm.CDMData_0_1.java
de.imc.mirror.sdk.android.cdm.CDMData_0_2.java
de.imc.mirror.sdk.android.cdm.CDMData_1_0.java
de.imc.mirror.sdk.android.cdm.CDMData_2_0.java
de.imc.mirror.sdk.android.cdm.CreationInfo.java
de.imc.mirror.sdk.android.cdm.Reference.java
de.imc.mirror.sdk.android.cdm.References.java
de.imc.mirror.sdk.android.cdm.Summary.java
de.imc.mirror.sdk.android.data.ChannelsTable.java
de.imc.mirror.sdk.android.data.DataDB.java
de.imc.mirror.sdk.android.data.DataTable.java
de.imc.mirror.sdk.android.data.MembersTable.java
de.imc.mirror.sdk.android.data.SendTable.java
de.imc.mirror.sdk.android.data.SpacesTable.java
de.imc.mirror.sdk.android.exceptions.InvalidBuildException.java
de.imc.mirror.sdk.android.exceptions.RequestException.java
de.imc.mirror.sdk.android.filter.AndFilter.java
de.imc.mirror.sdk.android.filter.DataModelFilter.java
de.imc.mirror.sdk.android.filter.NamespaceFilter.java
de.imc.mirror.sdk.android.filter.OrFilter.java
de.imc.mirror.sdk.android.filter.PeriodFilter.java
de.imc.mirror.sdk.android.filter.PublisherFilter.java
de.imc.mirror.sdk.android.filter.ReferencesFilter.java
de.imc.mirror.sdk.android.packet.DeleteRequestIQ.java
de.imc.mirror.sdk.android.packet.DeleteResponseIQ.java
de.imc.mirror.sdk.android.packet.PersistenceServiceDeleteProvider.java
de.imc.mirror.sdk.android.packet.PersistenceServiceQueryProvider.java
de.imc.mirror.sdk.android.packet.QueryRequestIQ.java
de.imc.mirror.sdk.android.packet.QueryResponseIQ.java
de.imc.mirror.sdk.android.utils.DatatypeConverter.java
de.imc.mirror.sdk.android.utils.DateToXsdDatetimeFormatter.java
org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl.java
org.apache.xerces.jaxp.datatype.DurationImpl.java
org.apache.xerces.jaxp.datatype.SerializedDuration.java
org.apache.xerces.jaxp.datatype.SerializedXMLGregorianCalendar.java
org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl.java
org.apache.xerces.util.DatatypeMessageFormatter.java