/*
******************************************************************************
* Copyright (C) 2007, International Business Machines Corporation and   *
* others. All Rights Reserved.                                               *
******************************************************************************
*/

package com.ibm.icu.impl.duration;

import java.util.Date;
import java.util.TimeZone;

/**
 * Abstract formatter for dates.  Differs from DateFormat in that it
 * provides <code>withLocale</code> and <code>withTimeZone</code> methods.
 */
public interface DateFormatter {

  /**
   * Format the date, provided as a java Date object.
   * 
   * @param date the date
   * @return the formatted time
   */
  String format(Date date);

  /**
   * Format the date, provided as milliseconds.
   *
   * @param date the date in milliseconds
   * @return the formatted time
   */
  String format(long date);

  /**
   * Returns a new DateFormatter that uses data for a new locale.
   *
   * @param locale the new locale to use
   * @return a new formatter for the given locale
   */
  DateFormatter withLocale(String localeName);

  /**
   * Returns a new DateFormatter that uses the new time zone.
   *
   * @param tz the new time zone
   * @return a new formatter for the given time zone
   */
  DateFormatter withTimeZone(TimeZone tz);
}
