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

com.phloc.datetime.format.PDTFormatter Maven / Gradle / Ivy

/**
 * Copyright (C) 2006-2014 phloc systems
 * http://www.phloc.com
 * office[at]phloc[dot]com
 *
 * 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.
 */
package com.phloc.datetime.format;

import java.util.Locale;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;

import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

import com.phloc.commons.annotations.PresentForCodeCoverage;
import com.phloc.datetime.config.PDTConfig;

/**
 * Create common {@link DateTimeFormatter} objects used for printing and parsing
 * date and time objects.
 * 
 * @author Philip Helger
 */
@Immutable
public final class PDTFormatter
{
  @PresentForCodeCoverage
  @SuppressWarnings ("unused")
  private static final PDTFormatter s_aInstance = new PDTFormatter ();

  private PDTFormatter ()
  {}

  /**
   * Assign the passed display locale and the default chronology to the passed
   * date time formatter.
   * 
   * @param aFormatter
   *        The formatter to be modified. May not be null.
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The modified date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getWithLocaleAndChrono (@Nonnull final DateTimeFormatter aFormatter,
                                                          @Nullable final Locale aDisplayLocale)
  {
    return aFormatter.withLocale (aDisplayLocale).withChronology (PDTConfig.getDefaultChronology ());
  }

  /**
   * Get the default date formatter for the passed locale. This used medium
   * style.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getDefaultFormatterDate (@Nullable final Locale aDisplayLocale)
  {
    return getMediumFormatterDate (aDisplayLocale);
  }

  /**
   * Get the short date formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getShortFormatterDate (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.shortDate (), aDisplayLocale);
  }

  /**
   * Get the medium date formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getMediumFormatterDate (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.mediumDate (), aDisplayLocale);
  }

  /**
   * Get the long date formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getLongFormatterDate (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.longDate (), aDisplayLocale);
  }

  /**
   * Get the full date formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getFullFormatterDate (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.fullDate (), aDisplayLocale);
  }

  /**
   * Get the default time formatter for the passed locale. This used medium
   * style.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getDefaultFormatterTime (@Nullable final Locale aDisplayLocale)
  {
    return getMediumFormatterTime (aDisplayLocale);
  }

  /**
   * Get the short time formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getShortFormatterTime (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.shortTime (), aDisplayLocale);
  }

  /**
   * Get the medium time formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getMediumFormatterTime (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.mediumTime (), aDisplayLocale);
  }

  /**
   * Get the long time formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getLongFormatterTime (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.longTime (), aDisplayLocale);
  }

  /**
   * Get the full time formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getFullFormatterTime (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.fullTime (), aDisplayLocale);
  }

  /**
   * Get the default date time formatter for the passed locale. The default
   * style is medium.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getDefaultFormatterDateTime (@Nullable final Locale aDisplayLocale)
  {
    return getMediumFormatterDateTime (aDisplayLocale);
  }

  /**
   * Get the short date time formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getShortFormatterDateTime (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.shortDateTime (), aDisplayLocale);
  }

  /**
   * Get the medium date time formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getMediumFormatterDateTime (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.mediumDateTime (), aDisplayLocale);
  }

  /**
   * Get the long date time formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getLongFormatterDateTime (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.longDateTime (), aDisplayLocale);
  }

  /**
   * Get the full date time formatter for the passed locale.
   * 
   * @param aDisplayLocale
   *        The display locale to be used. May be null.
   * @return The created date time formatter. Never null.
   */
  @Nonnull
  public static DateTimeFormatter getFullFormatterDateTime (@Nullable final Locale aDisplayLocale)
  {
    return getWithLocaleAndChrono (DateTimeFormat.fullDateTime (), aDisplayLocale);
  }

  /**
   * Get the {@link DateTimeFormatter} for the given pattern, using our default
   * chronology.
   * 
   * @param sPattern
   *        The pattern to be parsed
   * @return The formatter object.
   * @throws IllegalArgumentException
   *         If the pattern is illegal
   */
  @Nonnull
  public static DateTimeFormatter getForPattern (@Nonnull final String sPattern) throws IllegalArgumentException
  {
    return getForPattern (sPattern, null);
  }

  /**
   * Get the {@link DateTimeFormatter} for the given pattern and locale, using
   * our default chronology.
   * 
   * @param sPattern
   *        The pattern to be parsed
   * @param aDisplayLocale
   *        The locale to be used. May be null.
   * @return The formatter object.
   * @throws IllegalArgumentException
   *         If the pattern is illegal
   */
  @Nonnull
  public static DateTimeFormatter getForPattern (@Nonnull final String sPattern, @Nullable final Locale aDisplayLocale) throws IllegalArgumentException
  {
    return getWithLocaleAndChrono (DateTimeFormat.forPattern (sPattern), aDisplayLocale);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy