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

org.usergrid.utils.DateUtils Maven / Gradle / Ivy

There is a newer version: 0.0.27.1
Show newest version
/*******************************************************************************
 * Copyright 2012 Apigee Corporation
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
/*
 * Copyright 2010-2011 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Portions copyright 2006-2009 James Murty. Please see LICENSE.txt
 * for applicable license terms and NOTICE.txt for applicable notices.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
package org.usergrid.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.SimpleTimeZone;

/**
 * Utilities for parsing and formatting dates.
 * 

* Note that this class doesn't use static methods because of the * synchronization issues with SimpleDateFormat. This lets synchronization be * done on a per-object level, instead of on a per-class level. */ public class DateUtils { /** ISO 8601 parser */ protected final SimpleDateFormat iso8601DateParser = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); /** Alternate ISO 8601 parser without fractional seconds */ protected final SimpleDateFormat alternateIo8601DateParser = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss'Z'"); /** RFC 822 parser */ protected final SimpleDateFormat rfc822DateParser = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss z", Locale.US); /** * Constructs a new DateUtils object, ready to parse/format dates. */ public DateUtils() { iso8601DateParser.setTimeZone(new SimpleTimeZone(0, "GMT")); rfc822DateParser.setTimeZone(new SimpleTimeZone(0, "GMT")); alternateIo8601DateParser.setTimeZone(new SimpleTimeZone(0, "GMT")); } public static DateUtils instance = new DateUtils(); /** * Parses the specified date string as an ISO 8601 date and returns the Date * object. * * @param dateString * The date string to parse. * * @return The parsed Date object. * * @throws ParseException * If the date string could not be parsed. */ public Date parseIso8601Date(String dateString) throws ParseException { try { synchronized (iso8601DateParser) { return iso8601DateParser.parse(dateString); } } catch (ParseException e) { // If the first ISO 8601 parser didn't work, try the alternate // version which doesn't include fractional seconds synchronized (alternateIo8601DateParser) { return alternateIo8601DateParser.parse(dateString); } } } /** * Formats the specified date as an ISO 8601 string. * * @param date * The date to format. * * @return The ISO 8601 string representing the specified date. */ public String formatIso8601Date(Date date) { synchronized (iso8601DateParser) { return iso8601DateParser.format(date); } } public String iso8601DateNow() { return formatIso8601Date(new Date()); } /** * Formats the specified date as an RFC 822 string. * * @param date * The date to format. * * @return The RFC 822 string representing the specified date. */ public String formatRfc822Date(Date date) { synchronized (rfc822DateParser) { return rfc822DateParser.format(date); } } /** * Parses the specified date string as an RFC 822 date and returns the Date * object. * * @param dateString * The date string to parse. * * @return The parsed Date object. * * @throws ParseException * If the date string could not be parsed. */ public Date parseRfc822Date(String dateString) throws ParseException { synchronized (rfc822DateParser) { return rfc822DateParser.parse(dateString); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy