All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.box.sdk.BoxDateFormat Maven / Gradle / Ivy

There is a newer version: 4.11.1
Show newest version
package com.box.sdk;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

/**
 * Contains methods for parsing and formatting dates for use with the Box API.
 */
public final class BoxDateFormat {
    private static final ThreadLocal THREAD_LOCAL_DATE_FORMAT = new ThreadLocal() {
        @Override
        protected DateFormat initialValue() {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
            sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
            return sdf;
        }
    };

    private BoxDateFormat() { }

    /**
     * Parses a date string returned by the Box API into a {@link Date} object.
     * @param  dateString     a string containing the date.
     * @return                the parsed date.
     * @throws ParseException if the string cannot be parsed into a valid date.
     */
    public static Date parse(String dateString) throws ParseException {
        return THREAD_LOCAL_DATE_FORMAT.get().parse(fixIso8601TimeZone(dateString));
    }

    /**
     * Formats a date as a string that can be sent to the Box API.
     * @param  date the date to format.
     * @return      a string containing the formatted date.
     */
    public static String format(Date date) {
        return THREAD_LOCAL_DATE_FORMAT.get().format(date);
    }

    /**
     * Helper function to handle ISO 8601 strings of the following format:
     * "2008-03-01T13:00:00+01:00".  Note that the final colon (":") in the
     * time zone is not supported by SimpleDateFormat's "Z" token.
     *
     * @param dateString a string containing the date.
     * @return a date string that matches the date format.
     */
    private static String fixIso8601TimeZone(String dateString) {
        if (dateString.length() >= 24 && dateString.charAt(22) == ':') {
            return dateString.substring(0, 22) + dateString.substring(23);
        }
        return dateString;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy