Java/Data Type/Date Format
Содержание
- 1 Add AM PM to time using SimpleDateFormat
- 2 An alternate way to get week days symbols
- 3 Change date formatting symbols
- 4 Date Era change
- 5 Date Format
- 6 Date Format Cache
- 7 Date format: "dd.MM.yy", "yyyy.MM.dd G "at" hh:mm:ss z","EEE, MMM d, ""yy", "h:mm a", "H:mm", "H:mm:ss:SSS", "K:mm a,z","yyyy.MMMMM.dd GGG hh:mm aaa"
- 8 DateFormat.getDateInstance(DateFormat.LONG)
- 9 DateFormat.getDateInstance(DateFormat.SHORT)
- 10 DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.CANADA).format(new Date())
- 11 DateFormat.getTimeInstance(DateFormat.FULL, Locale.CANADA).format(new Date())
- 12 DateFormat.getTimeInstance(DateFormat.LONG)
- 13 DateFormat.getTimeInstance(DateFormat.LONG, Locale.CANADA).format(new Date())
- 14 DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.CANADA).format(new Date())
- 15 DateFormat.getTimeInstance(DateFormat.SHORT)
- 16 DateFormat.SHORT
- 17 Date Format Symbols
- 18 Date Formatting and Localization
- 19 Date format viewer
- 20 Date Format with Locale
- 21 Decimal Format with different Symbols
- 22 Display complete time and date information
- 23 Display just hour and minute
- 24 Display month by name and number
- 25 Display standard 12-hour time format
- 26 Find the current date format
- 27 Format date in dd/mm/yyyy format
- 28 Format date in Default format
- 29 Format date in Full format
- 30 Format date in Long format
- 31 Format date in Medium format
- 32 Format date in mm-dd-yyyy hh:mm:ss format
- 33 format Duration
- 34 Format hour in H (0-23) format like 0, 1...23.
- 35 Format hour in h (1-12 in AM/PM) format like 1, 2..12.
- 36 Format hour in HH (00-23) format like 00, 01..23.
- 37 Format hour in hh (01-12 in AM/PM) format like 01, 02..12.
- 38 Format hour in K (0-11 in AM/PM) format like 0, 1..11.
- 39 Format hour in k (1-24) format like 1, 2..24.
- 40 Format hour in KK (00-11) format like 00, 01,..11.
- 41 Format hour in kk (01-24) format like 01, 02..24.
- 42 Format minutes in mm format like 01, 02 etc.
- 43 Format month in M format like 1,2 etc
- 44 Format Month in MM format like 01, 02 etc.
- 45 Format Month in MMM format like Jan, Feb etc.
- 46 Format Month in MMMM format like January, February etc.
- 47 Format seconds in s format like 1,2 etc.
- 48 Format seconds in ss format like 01, 02 etc.
- 49 Formatting day in dd format like 01, 02 etc.
- 50 Formatting day in d format like 1,2 etc
- 51 Formatting day of week in EEEE format like Sunday, Monday etc.
- 52 Formatting day of week using SimpleDateFormat
- 53 Formatting minute in m format like 1,2 etc.
- 54 Format year in yy format like 07, 08 etc
- 55 Format year in yyyy format like 2007, 2008 etc.
- 56 Full day name: SimpleDateFormat("EEEE")
- 57 Full length of month name: SimpleDateFormat("MMMM")
- 58 Get a List of Short Month Names
- 59 Get a List of Short Weekday Names
- 60 Get a List of Weekday Names
- 61 Get Date Suffix
- 62 ISO8601 Date Format
- 63 ISO8601 formatter for date-time without time zone.The format used is yyyy-MM-dd"T"HH:mm:ss.
- 64 ISO8601 formatter for date-time with time zone. The format used is yyyy-MM-dd"T"HH:mm:ssZZ.
- 65 Java SimpleDateFormat Class Example("MM/dd/yyyy")
- 66 new SimpleDateFormat("a"): The am/pm marker
- 67 new SimpleDateFormat("hh")
- 68 new SimpleDateFormat("HH.mm.ss")
- 69 new SimpleDateFormat("hh:mm:ss a")
- 70 new SimpleDateFormat("HH:mm:ss Z")
- 71 new SimpleDateFormat("H") // The hour (0-23)
- 72 new SimpleDateFormat("mm")
- 73 new SimpleDateFormat("m"): The minutes
- 74 new SimpleDateFormat("ss")
- 75 new SimpleDateFormat("s"): The seconds
- 76 new SimpleDateFormat("Z")
- 77 new SimpleDateFormat("z"): The time zone
- 78 new SimpleDateFormat("zzzz")
- 79 Parse a date and time
- 80 Parse date string input with DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.CANADA)
- 81 Parse string date value input with SimpleDateFormat("dd-MMM-yy")
- 82 Parse string date value input with SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z")
- 83 Parse string date value with default format: DateFormat.getDateInstance(DateFormat.DEFAULT)
- 84 Parse with a custom format
- 85 Parse with a default format
- 86 Parsing custom formatted date string into Date object using SimpleDateFormat
- 87 Parsing the Time Using a Custom Format
- 88 Returns a String in the format Xhrs, Ymins, Z sec, for the time difference between two times
- 89 SimpleDateFormat("dd-MMM-yy")
- 90 Simple Date Format Demo
- 91 SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z")
- 92 SimpleDateFormat.getAvailableLocales
- 93 SimpleDateFormat("MM/dd/yy")
- 94 SimpleDateFormat("MM"): number based month value
- 95 SimpleDateFormat("yyyy")
- 96 Simply format a date as "YYYYMMDD"
- 97 The day in week: SimpleDateFormat("E")
- 98 The day number: SimpleDateFormat("d")
- 99 The format used is EEE, dd MMM yyyy HH:mm:ss Z in US locale.
- 100 The month: SimpleDateFormat("M")
- 101 The Time and Date Format Suffixes
- 102 This is same as MEDIUM: DateFormat.getDateInstance(DateFormat.DEFAULT).format(new Date())
- 103 This is same as MEDIUM: DateFormat.getDateInstance().format(new Date())
- 104 Three letter-month value: SimpleDateFormat("MMM")
- 105 Time format viewer
- 106 Two digits day number: SimpleDateFormat("dd")
- 107 Use relative indexes to simplify the creation of a custom time and date format.
Add AM PM to time using SimpleDateFormat
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
String strDateFormat = "HH:mm:ss a";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
System.out.println(sdf.format(date));
}
}
//10:20:12 AM
An alternate way to get week days symbols
import java.text.DateFormatSymbols;
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
String dayNames[] = new DateFormatSymbols().getWeekdays();
Calendar date2 = Calendar.getInstance();
System.out.println("Today is a " + dayNames[date2.get(Calendar.DAY_OF_WEEK)]);
}
}
Change date formatting symbols
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.text.DateFormatSymbols;
import java.util.Date;
public class Main {
public static void main(String[] args) {
String[] newMonths = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT",
"NOV", "DEC" };
String[] newShortMonths = { "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep",
"oct", "nov", "dec" };
String[] newWeekdays = { "", "Monday", "Tuesday", "Webnesday", "Thursday", "Friday",
"Saturaday", "Sunday" };
String[] shortWeekdays = { "", "monday", "tuesday", "webnesday", "thursday", "friday",
"saturaday", "sunday" };
DateFormatSymbols symbols = new DateFormatSymbols();
symbols.setMonths(newMonths);
symbols.setShortMonths(newShortMonths);
symbols.setWeekdays(newWeekdays);
symbols.setShortWeekdays(shortWeekdays);
DateFormat format = new SimpleDateFormat("dd MMMM yyyy", symbols);
System.out.println(format.format(new Date()));
format = new SimpleDateFormat("dd MMM yyyy", symbols);
System.out.println(format.format(new Date()));
format = new SimpleDateFormat("EEEE, dd MMM yyyy", symbols);
System.out.println(format.format(new Date()));
format = new SimpleDateFormat("E, dd MMM yyyy", symbols);
System.out.println(format.format(new Date()));
}
}
Date Era change
import java.text.DateFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ChangeEra {
public static void main(String s[]) {
SimpleDateFormat sdf = new SimpleDateFormat();
DateFormatSymbols dfs = sdf.getDateFormatSymbols();
String era[] = { "BCE", "CE" };
dfs.setEras(era);
sdf.setDateFormatSymbols(dfs);
sdf.applyPattern("MMMM d yyyy G");
System.out.println(sdf.format(new Date()));
}
}
Date Format
import java.text.SimpleDateFormat;
import java.util.Date;
class DateFormatApp {
public static void main(String args[]) {
String pattern = ""The year is "";
pattern += "yyyy GG";
pattern += "".\nThe month is "";
pattern += "MMMMMMMMM";
pattern += "".\nIt is "";
pattern += "hh";
pattern += "" o""clock "";
pattern += "a, zzzz";
pattern += ""."";
SimpleDateFormat format = new SimpleDateFormat(pattern);
String formattedDate = format.format(new Date());
System.out.println(formattedDate);
}
}
Date Format Cache
//
// Copyright 2004-2005 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// 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.
//
import java.text.DateFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
/* ------------------------------------------------------------ */
/** Date Format Cache.
* Computes String representations of Dates and caches
* the results so that subsequent requests within the same minute
* will be fast.
*
* Only format strings that contain either "ss" or "ss.SSS" are
* handled.
*
* The timezone of the date may be included as an ID with the "zzz"
* format string or as an offset with the "ZZZ" format string.
*
* If consecutive calls are frequently very different, then this
* may be a little slower than a normal DateFormat.
*
* @author Kent Johnson <KJohnson@transparent.ru>
* @author Greg Wilkins (gregw)
*/
public class DateCache
{
private static long __hitWindow=60*60;
private static long __MaxMisses=10;
private String _formatString;
private String _tzFormatString;
private SimpleDateFormat _tzFormat;
private String _minFormatString;
private SimpleDateFormat _minFormat;
private String _secFormatString;
private String _secFormatString0;
private String _secFormatString1;
private boolean _millis=false;
private long _misses = 0;
private long _lastMinutes = -1;
private long _lastSeconds = -1;
private String _lastResult = null;
private Locale _locale = null;
private DateFormatSymbols _dfs = null;
/* ------------------------------------------------------------ */
/** Constructor.
* Make a DateCache that will use a default format. The default format
* generates the same results as Date.toString().
*/
public DateCache()
{
this("EEE MMM dd HH:mm:ss zzz yyyy");
getFormat().setTimeZone(TimeZone.getDefault());
}
/* ------------------------------------------------------------ */
/** Constructor.
* Make a DateCache that will use the given format
*/
public DateCache(String format)
{
_formatString=format;
setTimeZone(TimeZone.getDefault());
}
/* ------------------------------------------------------------ */
public DateCache(String format,Locale l)
{
_formatString=format;
_locale = l;
setTimeZone(TimeZone.getDefault());
}
/* ------------------------------------------------------------ */
public DateCache(String format,DateFormatSymbols s)
{
_formatString=format;
_dfs = s;
setTimeZone(TimeZone.getDefault());
}
/* ------------------------------------------------------------ */
/** Set the timezone.
* @param tz TimeZone
*/
public void setTimeZone(TimeZone tz)
{
setTzFormatString(tz);
if( _locale != null )
{
_tzFormat=new SimpleDateFormat(_tzFormatString,_locale);
_minFormat=new SimpleDateFormat(_minFormatString,_locale);
}
else if( _dfs != null )
{
_tzFormat=new SimpleDateFormat(_tzFormatString,_dfs);
_minFormat=new SimpleDateFormat(_minFormatString,_dfs);
}
else
{
_tzFormat=new SimpleDateFormat(_tzFormatString);
_minFormat=new SimpleDateFormat(_minFormatString);
}
_tzFormat.setTimeZone(tz);
_minFormat.setTimeZone(tz);
_lastSeconds=-1;
_lastMinutes=-1;
}
/* ------------------------------------------------------------ */
public TimeZone getTimeZone()
{
return _tzFormat.getTimeZone();
}
/* ------------------------------------------------------------ */
/** Set the timezone.
* @param timeZoneId TimeZoneId the ID of the zone as used by
* TimeZone.getTimeZone(id)
*/
public void setTimeZoneID(String timeZoneId)
{
setTimeZone(TimeZone.getTimeZone(timeZoneId));
}
/* ------------------------------------------------------------ */
private void setTzFormatString(final TimeZone tz )
{
int zIndex = _formatString.indexOf( "ZZZ" );
if( zIndex >= 0 )
{
String ss1 = _formatString.substring( 0, zIndex );
String ss2 = _formatString.substring( zIndex+3 );
int tzOffset = tz.getRawOffset();
StringBuffer sb = new StringBuffer(_formatString.length()+10);
sb.append(ss1);
sb.append(""");
if( tzOffset >= 0 )
sb.append( "+" );
else
{
tzOffset = -tzOffset;
sb.append( "-" );
}
int raw = tzOffset / (1000*60); // Convert to seconds
int hr = raw / 60;
int min = raw % 60;
if( hr < 10 )
sb.append( "0" );
sb.append( hr );
if( min < 10 )
sb.append( "0" );
sb.append( min );
sb.append( "\"" );
sb.append(ss2);
_tzFormatString=sb.toString();
}
else
_tzFormatString=_formatString;
setMinFormatString();
}
/* ------------------------------------------------------------ */
private void setMinFormatString()
{
int i = _tzFormatString.indexOf("ss.SSS");
int l = 6;
if (i>=0)
_millis=true;
else
{
i = _tzFormatString.indexOf("ss");
l=2;
}
// Build a formatter that formats a second format string
// Have to replace @ with " later due to bug in SimpleDateFormat
String ss1=_tzFormatString.substring(0,i);
String ss2=_tzFormatString.substring(i+l);
_minFormatString =ss1+(_millis?""ss.SSS"":""ss"")+ss2;
}
/* ------------------------------------------------------------ */
/** Format a date according to our stored formatter.
* @param inDate
* @return Formatted date
*/
public synchronized String format(Date inDate)
{
return format(inDate.getTime());
}
/* ------------------------------------------------------------ */
/** Format a date according to our stored formatter.
* @param inDate
* @return Formatted date
*/
public synchronized String format(long inDate)
{
long seconds = inDate / 1000;
// Is it not suitable to cache?
if (seconds<_lastSeconds ||
_lastSeconds>0 && seconds>_lastSeconds+__hitWindow)
{
// It"s a cache miss
_misses++;
if (_misses<__MaxMisses)
{
Date d = new Date(inDate);
return _tzFormat.format(d);
}
}
else if (_misses>0)
_misses--;
// Check if we are in the same second
// and don"t care about millis
if (_lastSeconds==seconds && !_millis)
return _lastResult;
Date d = new Date(inDate);
// Check if we need a new format string
long minutes = seconds/60;
if (_lastMinutes != minutes)
{
_lastMinutes = minutes;
_secFormatString=_minFormat.format(d);
int i;
int l;
if (_millis)
{
i=_secFormatString.indexOf("ss.SSS");
l=6;
}
else
{
i=_secFormatString.indexOf("ss");
l=2;
}
_secFormatString0=_secFormatString.substring(0,i);
_secFormatString1=_secFormatString.substring(i+l);
}
// Always format if we get here
_lastSeconds = seconds;
StringBuffer sb=new StringBuffer(_secFormatString.length());
synchronized(sb)
{
sb.append(_secFormatString0);
int s=(int)(seconds%60);
if (s<10)
sb.append("0");
sb.append(s);
if (_millis)
{
long millis = inDate%1000;
if (millis<10)
sb.append(".00");
else if (millis<100)
sb.append(".0");
else
sb.append(".");
sb.append(millis);
}
sb.append(_secFormatString1);
_lastResult=sb.toString();
}
return _lastResult;
}
/* ------------------------------------------------------------ */
/** Format to string buffer.
* @param inDate Date the format
* @param buffer StringBuffer
*/
public void format(long inDate, StringBuffer buffer)
{
buffer.append(format(inDate));
}
/* ------------------------------------------------------------ */
/** Get the format.
*/
public SimpleDateFormat getFormat()
{
return _minFormat;
}
/* ------------------------------------------------------------ */
public String getFormatString()
{
return _formatString;
}
/* ------------------------------------------------------------ */
public String now()
{
return format(System.currentTimeMillis());
}
}
Date format: "dd.MM.yy", "yyyy.MM.dd G "at" hh:mm:ss z","EEE, MMM d, ""yy", "h:mm a", "H:mm", "H:mm:ss:SSS", "K:mm a,z","yyyy.MMMMM.dd GGG hh:mm aaa"
/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class SimpleDateFormatDemo {
static public void displayDate(Locale currentLocale) {
Date today;
String result;
SimpleDateFormat formatter;
formatter = new SimpleDateFormat("EEE d MMM yy", currentLocale);
today = new Date();
result = formatter.format(today);
System.out.println("Locale: " + currentLocale.toString());
System.out.println("Result: " + result);
}
static public void displayPattern(String pattern, Locale currentLocale) {
Date today;
SimpleDateFormat formatter;
String output;
formatter = new SimpleDateFormat(pattern, currentLocale);
today = new Date();
output = formatter.format(today);
System.out.println(pattern + " " + output);
}
static public void main(String[] args) {
Locale[] locales = { new Locale("fr", "FR"), new Locale("de", "DE"),
new Locale("en", "US") };
for (int i = 0; i < locales.length; i++) {
displayDate(locales[i]);
System.out.println();
}
String[] patterns = { "dd.MM.yy", "yyyy.MM.dd G "at" hh:mm:ss z",
"EEE, MMM d, ""yy", "h:mm a", "H:mm", "H:mm:ss:SSS", "K:mm a,z",
"yyyy.MMMMM.dd GGG hh:mm aaa" };
for (int k = 0; k < patterns.length; k++) {
displayPattern(patterns[k], new Locale("en", "US"));
System.out.println();
}
System.out.println();
}
}
DateFormat.getDateInstance(DateFormat.LONG)
import java.text.DateFormat;
import java.util.Date;
class DateFormatDemo {
public static void main(String args[]) {
Date date = new Date();
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
System.out.println("Long form: " + df.format(date));
}
}
DateFormat.getDateInstance(DateFormat.SHORT)
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
public class DateTest {
public static void main(String[] args) throws ParseException {
DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT);
formatter.setLenient(false);
Date theDate = formatter.parse(args[0]);
System.out.println(theDate);
}
}
DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.CANADA).format(new Date())
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] argv) throws Exception {
String s = DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.CANADA).format(new Date());
System.out.println(s);
}
}
DateFormat.getTimeInstance(DateFormat.FULL, Locale.CANADA).format(new Date())
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] argv) throws Exception {
String s = DateFormat.getTimeInstance(DateFormat.FULL, Locale.CANADA).format(new Date());
System.out.println(s);
}
}
DateFormat.getTimeInstance(DateFormat.LONG)
import java.text.DateFormat;
import java.util.Date;
class DateFormatDemo {
public static void main(String args[]) {
Date date = new Date();
DateFormat df = DateFormat.getTimeInstance(DateFormat.LONG);
System.out.println("Long form: " + df.format(date));
}
}
DateFormat.getTimeInstance(DateFormat.LONG, Locale.CANADA).format(new Date())
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] argv) throws Exception {
String s = DateFormat.getTimeInstance(DateFormat.LONG, Locale.CANADA).format(new Date());
System.out.println(s);
}
}
DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.CANADA).format(new Date())
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] argv) throws Exception {
String s = DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.CANADA).format(new Date());
System.out.println(s);
}
}
DateFormat.getTimeInstance(DateFormat.SHORT)
import java.text.DateFormat;
import java.util.Date;
class DateFormatDemo {
public static void main(String args[]) {
Date date = new Date();
DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
System.out.println("Short form: " + df.format(date));
}
}
DateFormat.SHORT
import java.text.DateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
String strDate = DateFormat.getDateInstance(DateFormat.SHORT).format(date);
System.out.println(strDate);
}
}
Date Format Symbols
/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import java.text.DateFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class DateFormatSymbolsDemo {
static public void changeWeekDays() {
Date today;
String result;
SimpleDateFormat formatter;
DateFormatSymbols symbols;
String[] defaultDays;
String[] modifiedDays;
symbols = new DateFormatSymbols(new Locale("en", "US"));
defaultDays = symbols.getShortWeekdays();
for (int i = 0; i < defaultDays.length; i++) {
System.out.print(defaultDays[i] + " ");
}
System.out.println();
String[] capitalDays = { "", "SUN", "MON", "TUE", "WED", "THU", "FRI",
"SAT" };
symbols.setShortWeekdays(capitalDays);
modifiedDays = symbols.getShortWeekdays();
for (int i = 0; i < modifiedDays.length; i++) {
System.out.print(modifiedDays[i] + " ");
}
System.out.println();
System.out.println();
formatter = new SimpleDateFormat("E", symbols);
today = new Date();
result = formatter.format(today);
System.out.println(result);
}
static public void main(String[] args) {
changeWeekDays();
}
}
Date Formatting and Localization
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Main {
public static void main(String[] args) {
DateFormat df = DateFormat.getDateInstance();
if (df instanceof SimpleDateFormat) {
SimpleDateFormat sdf = (SimpleDateFormat) df;
System.out.println(sdf.toPattern());
} else {
System.out.println("sorry");
}
}
}
Date format viewer
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
public class DateViewer extends JPanel {
protected AbstractTableModel tableModel;
protected Date selectedDate = new Date();
protected final static Locale[] availableLocales;
static {
availableLocales = Locale.getAvailableLocales();
}
public final static int LOCALE_COLUMN = 0;
public final static int SHORT_COLUMN = 1;
public final static int MEDIUM_COLUMN = 2;
public final static int LONG_COLUMN = 3;
public final static int FULL_COLUMN = 4;
public final static String[] columnHeaders = { "Locale", "Short", "Medium", "Long", "Full" };
public static void main(String[] args) {
JFrame f = new JFrame("Date Viewer");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(new DateViewer());
f.pack();
f.setVisible(true);
}
public DateViewer() {
tableModel = new LocaleTableModel();
JTable table = new JTable(tableModel);
add(new JScrollPane(table));
refreshTable();
}
protected void refreshTable() {
int style = DateFormat.SHORT;
selectedDate = new Date();
tableModel.fireTableDataChanged();
}
class LocaleTableModel extends AbstractTableModel {
public int getRowCount() {
return availableLocales.length;
}
public int getColumnCount() {
return columnHeaders.length;
}
public Object getValueAt(int row, int column) {
Locale locale = availableLocales[row];
DateFormat formatter = DateFormat.getInstance();
switch (column) {
case LOCALE_COLUMN:
return locale.getDisplayName();
case SHORT_COLUMN:
formatter = DateFormat.getDateInstance(DateFormat.SHORT, locale);
break;
case MEDIUM_COLUMN:
formatter = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
break;
case LONG_COLUMN:
formatter = DateFormat.getDateInstance(DateFormat.LONG, locale);
break;
case FULL_COLUMN:
formatter = DateFormat.getDateInstance(DateFormat.FULL, locale);
}
return formatter.format(selectedDate);
}
public String getColumnName(int column) {
return columnHeaders[column];
}
}
}
Date Format with Locale
/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class DateFormatDemo {
static public void displayDate(Locale currentLocale) {
Date today;
String dateOut;
DateFormat dateFormatter;
dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT,
currentLocale);
today = new Date();
dateOut = dateFormatter.format(today);
System.out.println(dateOut + " " + currentLocale.toString());
}
static public void showBothStyles(Locale currentLocale) {
Date today;
String result;
DateFormat formatter;
int[] styles = { DateFormat.DEFAULT, DateFormat.SHORT, DateFormat.MEDIUM,
DateFormat.LONG, DateFormat.FULL };
System.out.println();
System.out.println("Locale: " + currentLocale.toString());
System.out.println();
today = new Date();
for (int k = 0; k < styles.length; k++) {
formatter = DateFormat.getDateTimeInstance(styles[k], styles[k],
currentLocale);
result = formatter.format(today);
System.out.println(result);
}
}
static public void showDateStyles(Locale currentLocale) {
Date today = new Date();
String result;
DateFormat formatter;
int[] styles = { DateFormat.DEFAULT, DateFormat.SHORT, DateFormat.MEDIUM,
DateFormat.LONG, DateFormat.FULL };
System.out.println();
System.out.println("Locale: " + currentLocale.toString());
System.out.println();
for (int k = 0; k < styles.length; k++) {
formatter = DateFormat.getDateInstance(styles[k], currentLocale);
result = formatter.format(today);
System.out.println(result);
}
}
static public void showTimeStyles(Locale currentLocale) {
Date today = new Date();
String result;
DateFormat formatter;
int[] styles = { DateFormat.DEFAULT, DateFormat.SHORT, DateFormat.MEDIUM,
DateFormat.LONG, DateFormat.FULL };
System.out.println();
System.out.println("Locale: " + currentLocale.toString());
System.out.println();
for (int k = 0; k < styles.length; k++) {
formatter = DateFormat.getTimeInstance(styles[k], currentLocale);
result = formatter.format(today);
System.out.println(result);
}
}
static public void main(String[] args) {
Locale[] locales = { new Locale("fr", "FR"), new Locale("de", "DE"),
new Locale("en", "US") };
for (int i = 0; i < locales.length; i++) {
displayDate(locales[i]);
}
showDateStyles(new Locale("en", "US"));
showDateStyles(new Locale("fr", "FR"));
showTimeStyles(new Locale("en", "US"));
showTimeStyles(new Locale("de", "DE"));
showBothStyles(new Locale("en", "US"));
showBothStyles(new Locale("fr", "FR"));
}
}
Decimal Format with different Symbols
/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.util.Locale;
public class DecimalFormatDemo {
static public void customFormat(String pattern, double value) {
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
System.out.println(value + " " + pattern + " " + output);
}
static public void localizedFormat(String pattern, double value, Locale loc) {
NumberFormat nf = NumberFormat.getNumberInstance(loc);
DecimalFormat df = (DecimalFormat) nf;
df.applyPattern(pattern);
String output = df.format(value);
System.out.println(pattern + " " + output + " " + loc.toString());
}
static public void main(String[] args) {
customFormat("###,###.###", 123456.789);
customFormat("###.##", 123456.789);
customFormat("000000.000", 123.78);
customFormat("$###,###.###", 12345.67);
customFormat("\u00a5###,###.###", 12345.67);
Locale currentLocale = new Locale("en", "US");
DecimalFormatSymbols unusualSymbols = new DecimalFormatSymbols(
currentLocale);
unusualSymbols.setDecimalSeparator("|");
unusualSymbols.setGroupingSeparator("^");
String strange = "#,##0.###";
DecimalFormat weirdFormatter = new DecimalFormat(strange, unusualSymbols);
weirdFormatter.setGroupingSize(4);
String bizarre = weirdFormatter.format(12345.678);
System.out.println(bizarre);
Locale[] locales = { new Locale("en", "US"), new Locale("de", "DE"),
new Locale("fr", "FR") };
for (int i = 0; i < locales.length; i++) {
localizedFormat("###,###.###", 123456.789, locales[i]);
}
}
}
Display complete time and date information
import java.util.Calendar;
import java.util.Formatter;
public class MainClass {
public static void main(String args[]) {
Formatter fmt = new Formatter();
Calendar cal = Calendar.getInstance();
fmt = new Formatter();
fmt.format("%tc", cal);
System.out.println(fmt);
}
}
//Wed Jun 11 10:39:58 PDT 2008
Display just hour and minute
import java.util.Calendar;
import java.util.Formatter;
public class MainClass {
public static void main(String args[]) {
Formatter fmt = new Formatter();
Calendar cal = Calendar.getInstance();
fmt = new Formatter();
fmt.format("%tl:%tM", cal, cal);
System.out.println(fmt);
}
}
//10:40
Display month by name and number
import java.util.Calendar;
import java.util.Formatter;
public class MainClass {
public static void main(String args[]) {
Formatter fmt = new Formatter();
Calendar cal = Calendar.getInstance();
fmt = new Formatter();
fmt.format("%tB %tb %tm", cal, cal, cal);
System.out.println(fmt);
}
}
//June Jun 06
Display standard 12-hour time format
import java.util.Calendar;
import java.util.Formatter;
public class MainClass {
public static void main(String args[]) {
Formatter fmt = new Formatter();
Calendar cal = Calendar.getInstance();
fmt.format("%tr", cal);
System.out.println(fmt);
}
}
//10:39:33 AM
Find the current date format
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class Main {
public static void main(String args[]) {
SimpleDateFormat df = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT);
System.out.println("The short date format is " + df.toPattern());
Locale loc = Locale.ITALY;
df = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT, loc);
System.out.println("The short date format is " + df.toPattern());
}
}
Format date in dd/mm/yyyy format
import java.util.Date;
import java.text.SimpleDateFormat;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy");
String strDate = sdf.format(date);
System.out.println("formatted date in mm/dd/yy : " + strDate);
sdf = new SimpleDateFormat("dd/MM/yyyy");
strDate = sdf.format(date);
System.out.println("formatted date in dd/MM/yyyy : " + strDate);
}
}
Format date in Default format
import java.text.DateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
String strDate = DateFormat.getDateInstance(DateFormat.DEFAULT).format(date);
System.out.println(strDate);
}
}
Format date in Full format
import java.text.DateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
String strDate = DateFormat.getDateInstance(DateFormat.FULL).format(date);
System.out.println(strDate);
}
}
Format date in Long format
import java.text.DateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
String strDate = DateFormat.getDateInstance(DateFormat.LONG).format(date);
System.out.println(strDate);
}
}
Format date in Medium format
import java.text.DateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
String strDate = DateFormat.getDateInstance(DateFormat.MEDIUM).format(date);
System.out.println(strDate);
}
}
Format date in mm-dd-yyyy hh:mm:ss format
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy");
String strDate = sdf.format(date);
System.out.println("formatted date in mm/dd/yy : " + strDate);
sdf = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss");
strDate = sdf.format(date);
System.out.println("formatted date in mm-dd-yyyy hh:mm:ss : " + strDate);
}
}
format Duration
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public abstract class TimeUtils {
public static String formatDuration(long duration) {
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss:SSS");
format.setTimeZone(TimeZone.getTimeZone("GMT"));
return format.format(new Date(duration));
}
}
Format hour in H (0-23) format like 0, 1...23.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("H");
System.out.println("hour in H format : " + sdf.format(date));
}
}
//hour in h format : 11
Format hour in h (1-12 in AM/PM) format like 1, 2..12.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
String strDateFormat = "h";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
System.out.println("hour in h format : " + sdf.format(date));
}
}
//hour in h format : 11
Format hour in HH (00-23) format like 00, 01..23.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("HH");
System.out.println("hour in HH format : " + sdf.format(date));
}
}
//hour in h format : 11
Format hour in hh (01-12 in AM/PM) format like 01, 02..12.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("hh");
System.out.println("hour in hh format : " + sdf.format(date));
}
}
//hour in h format : 11
Format hour in K (0-11 in AM/PM) format like 0, 1..11.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("K");
System.out.println("hour in K format : " + sdf.format(date));
}
}
//hour in h format : 11
Format hour in k (1-24) format like 1, 2..24.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("k");
System.out.println("hour in k format : " + sdf.format(date));
}
}
//hour in h format : 11
Format hour in KK (00-11) format like 00, 01,..11.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("KK");
System.out.println("hour in KK format : " + sdf.format(date));
}
}
// hour in h format : 11
Format hour in kk (01-24) format like 01, 02..24.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("kk");
System.out.println("hour in kk format : " + sdf.format(date));
}
}
//hour in h format : 11
Format minutes in mm format like 01, 02 etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("mm");
System.out.println("minutes in mm format : " + sdf.format(date));
}
}
// minutes in m format : 35
Format month in M format like 1,2 etc
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("M");
System.out.println("Current Month in M format : " + sdf.format(date));
}
}
//Current Month in M format : 2
Format Month in MM format like 01, 02 etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MM");
System.out.println("Current Month in MM format : " + sdf.format(date)); }
}
//Current Month in M format : 02
Format Month in MMM format like Jan, Feb etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MMM");
System.out.println("Current Month in MMM format : " + sdf.format(date));
}
}
//Current Month in MMM format : Feb
Format Month in MMMM format like January, February etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MMMM");
System.out.println("Current Month in MMMM format : " + sdf.format(date));
}
}
//Current Month in MMMM format : February
Format seconds in s format like 1,2 etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("s");
System.out.println("seconds in s format : " + sdf.format(date));
}
}
//seconds in s format : 40
Format seconds in ss format like 01, 02 etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("ss");
System.out.println("seconds in ss format : " + sdf.format(date));
}
}
//seconds in ss format : 14
Formatting day in dd format like 01, 02 etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
String strDateFormat = "dd";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
System.out.println("Current day in dd format : " + sdf.format(new Date()));
}
}
Formatting day in d format like 1,2 etc
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
String strDateFormat = "d";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
System.out.println("Current day in d format : " + sdf.format(date));
}
}
Formatting day of week in EEEE format like Sunday, Monday etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
String strDateFormat = "EEEE";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
System.out.println("Current day of week in EEEE format : " + sdf.format(new Date()));
}
}
Formatting day of week using SimpleDateFormat
//Formatting day of week in E format like Sun, Mon etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
String strDateFormat = "E";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
System.out.println("Current day of week in E format : " + sdf.format(date));
}
}
Formatting minute in m format like 1,2 etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("m");
System.out.println("minutes in m format : " + sdf.format(date));
}
}
//minutes in m format : 35
Format year in yy format like 07, 08 etc
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yy");
System.out.println("Current year in yy format : " + sdf.format(date));
}
}
//Current year in yy format : 09
Format year in yyyy format like 2007, 2008 etc.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
System.out.println("Current year in yyyy format : " + sdf.format(date));
}
}
//Current year in yyyy format : 2009
Full day name: SimpleDateFormat("EEEE")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("EEEE");
String s = formatter.format(new Date());
System.out.println(s);
}
}
Full length of month name: SimpleDateFormat("MMMM")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("MMMM");
String s = formatter.format(new Date());
System.out.println(s);
}
}
Get a List of Short Month Names
import java.text.DateFormatSymbols;
public class Main {
public static void main(String[] args) {
String[] shortMonths = new DateFormatSymbols().getShortMonths();
for (int i = 0; i < shortMonths.length; i++) {
String shortMonth = shortMonths[i];
System.out.println("shortMonth = " + shortMonth);
}
}
}
Get a List of Short Weekday Names
import java.text.DateFormatSymbols;
public class Main {
public static void main(String[] args) {
String[] shortWeekdays = new DateFormatSymbols().getShortWeekdays();
for (int i = 0; i < shortWeekdays.length; i++) {
String shortWeekday = shortWeekdays[i];
System.out.println("shortWeekday = " + shortWeekday);
}
}
}
Get a List of Weekday Names
import java.text.DateFormatSymbols;
public class Main {
public static void main(String[] args) {
String[] weekdays = new DateFormatSymbols().getWeekdays();
for (int i = 0; i < weekdays.length; i++) {
String weekday = weekdays[i];
System.out.println("weekday = " + weekday);
}
}
}
Get Date Suffix
/**********************************************************************************
Feedzeo!
A free and open source RSS/Atom/RDF feed aggregator
Copyright (C) 2005-2006 Anand Rao (anandrao@users.sourceforge.net)
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
************************************************************************************/
import java.util.*;
public class DateUtil {
private static String[] Months= { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
private static String getDateSuffix( int i) {
switch (i) {
case 1: case 21: case 31:
return ("st");
case 2: case 22:
return ("nd");
case 3: case 23:
return ("rd");
case 4: case 5:
case 6: case 7:
case 8: case 9:
case 10: case 11:
case 12: case 13:
case 14: case 15:
case 16: case 17:
case 18: case 19:
case 20: case 24:
case 25: case 26:
case 27: case 28:
case 29: case 30:
return ("th");
default:
return ("");
}
}
}
ISO8601 Date Format
//revised from skaringa
import java.text.DateFormat;
import java.text.FieldPosition;
import java.text.ParsePosition;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
/**
* Format and parse an ISO 8601 DateFormat used in XML documents.
* The lexical representation for date is the reduced (right truncated)
* lexical representation for dateTime: CCYY-MM-DD.
* No left truncation is allowed.
* An optional following time zone qualifier is allowed as for dateTime.
*/
public class ISO8601DateFormat extends ISO8601DateTimeFormat {
/**
* Construct a new ISO8601DateFormat using the default time zone.
*
*/
public ISO8601DateFormat() {
setCalendar(Calendar.getInstance());
}
/**
* Construct a new ISO8601DateFormat using a specific time zone.
* @param tz The time zone used to format and parse the date.
*/
public ISO8601DateFormat(TimeZone tz) {
setCalendar(Calendar.getInstance(tz));
}
/**
* @see java.text.DateFormat#parse(String, ParsePosition)
*/
public Date parse(String text, ParsePosition pos) {
int i = pos.getIndex();
try {
int year = Integer.valueOf(text.substring(i, i + 4)).intValue();
i += 4;
if (text.charAt(i) != "-") {
throw new NumberFormatException();
}
i++;
int month = Integer.valueOf(text.substring(i, i + 2)).intValue() - 1;
i += 2;
if (text.charAt(i) != "-") {
throw new NumberFormatException();
}
i++;
int day = Integer.valueOf(text.substring(i, i + 2)).intValue();
i += 2;
calendar.set(year, month, day);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0); // no parts of a second
i = parseTZ(i, text);
}
catch (NumberFormatException ex) {
pos.setErrorIndex(i);
return null;
}
catch (IndexOutOfBoundsException ex) {
pos.setErrorIndex(i);
return null;
}
finally {
pos.setIndex(i);
}
return calendar.getTime();
}
/**
* @see java.text.DateFormat#format(Date, StringBuffer, FieldPosition)
*/
public StringBuffer format(
Date date,
StringBuffer sbuf,
FieldPosition fieldPosition) {
calendar.setTime(date);
writeCCYYMM(sbuf);
//writeTZ(sbuf);
return sbuf;
}
}
/**
* Format and parse an ISO 8601 DateTimeFormat used in XML documents.
* This lexical representation is the ISO 8601
* extended format CCYY-MM-DDThh:mm:ss
* where "CC" represents the century, "YY" the year, "MM" the month
* and "DD" the day,
* preceded by an optional leading "-" sign to indicate a negative number.
* If the sign is omitted, "+" is assumed.
* The letter "T" is the date/time separator
* and "hh", "mm", "ss" represent hour, minute and second respectively.
* This representation may be immediately followed by a "Z" to indicate
* Coordinated Universal Time (UTC) or, to indicate the time zone,
* i.e. the difference between the local time and Coordinated Universal Time,
* immediately followed by a sign, + or -,
* followed by the difference from UTC represented as hh:mm.
*
*/
class ISO8601DateTimeFormat extends DateFormat {
/**
* Construct a new ISO8601DateTimeFormat using the default time zone.
*
*/
public ISO8601DateTimeFormat() {
setCalendar(Calendar.getInstance());
}
/**
* Construct a new ISO8601DateTimeFormat using a specific time zone.
* @param tz The time zone used to format and parse the date.
*/
public ISO8601DateTimeFormat(TimeZone tz) {
setCalendar(Calendar.getInstance(tz));
}
/**
* @see DateFormat#parse(String, ParsePosition)
*/
public Date parse(String text, ParsePosition pos) {
int i = pos.getIndex();
try {
int year = Integer.valueOf(text.substring(i, i + 4)).intValue();
i += 4;
if (text.charAt(i) != "-") {
throw new NumberFormatException();
}
i++;
int month = Integer.valueOf(text.substring(i, i + 2)).intValue() - 1;
i += 2;
if (text.charAt(i) != "-") {
throw new NumberFormatException();
}
i++;
int day = Integer.valueOf(text.substring(i, i + 2)).intValue();
i += 2;
if (text.charAt(i) != "T") {
throw new NumberFormatException();
}
i++;
int hour = Integer.valueOf(text.substring(i, i + 2)).intValue();
i += 2;
if (text.charAt(i) != ":") {
throw new NumberFormatException();
}
i++;
int mins = Integer.valueOf(text.substring(i, i + 2)).intValue();
i += 2;
int secs = 0;
if (i < text.length() && text.charAt(i) == ":") {
// handle seconds flexible
i++;
secs = Integer.valueOf(text.substring(i, i + 2)).intValue();
i += 2;
}
calendar.set(year, month, day, hour, mins, secs);
calendar.set(Calendar.MILLISECOND, 0); // no parts of a second
i = parseTZ(i, text);
}
catch (NumberFormatException ex) {
pos.setErrorIndex(i);
return null;
}
catch (IndexOutOfBoundsException ex) {
pos.setErrorIndex(i);
return null;
}
finally {
pos.setIndex(i);
}
return calendar.getTime();
}
/**
* Parse the time zone.
* @param i The position to start parsing.
* @param text The text to parse.
* @return The position after parsing has finished.
*/
protected final int parseTZ(int i, String text) {
if (i < text.length()) {
// check and handle the zone/dst offset
int offset = 0;
if (text.charAt(i) == "Z") {
offset = 0;
i++;
}
else {
int sign = 1;
if (text.charAt(i) == "-") {
sign = -1;
}
else if (text.charAt(i) != "+") {
throw new NumberFormatException();
}
i++;
int offsetHour = Integer.valueOf(text.substring(i, i + 2)).intValue();
i += 2;
if (text.charAt(i) != ":") {
throw new NumberFormatException();
}
i++;
int offsetMin = Integer.valueOf(text.substring(i, i + 2)).intValue();
i += 2;
offset = ((offsetHour * 60) + offsetMin) * 60000 * sign;
}
int offsetCal =
calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
calendar.add(Calendar.MILLISECOND, offsetCal - offset);
}
return i;
}
/**
* @see DateFormat#format(Date, StringBuffer, FieldPosition)
*/
public StringBuffer format(
Date date,
StringBuffer sbuf,
FieldPosition fieldPosition) {
calendar.setTime(date);
writeCCYYMM(sbuf);
sbuf.append("T");
writehhmmss(sbuf);
writeTZ(sbuf);
return sbuf;
}
/**
* Write the time zone string.
* @param sbuf The buffer to append the time zone.
*/
protected final void writeTZ(StringBuffer sbuf) {
int offset =
calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
if (offset == 0) {
sbuf.append("Z");
}
else {
int offsetHour = offset / 3600000;
int offsetMin = (offset % 3600000) / 60000;
if (offset >= 0) {
sbuf.append("+");
}
else {
sbuf.append("-");
offsetHour = 0 - offsetHour;
offsetMin = 0 - offsetMin;
}
appendInt(sbuf, offsetHour, 2);
sbuf.append(":");
appendInt(sbuf, offsetMin, 2);
}
}
/**
* Write hour, minutes, and seconds.
* @param sbuf The buffer to append the string.
*/
protected final void writehhmmss(StringBuffer sbuf) {
int hour = calendar.get(Calendar.HOUR_OF_DAY);
appendInt(sbuf, hour, 2);
sbuf.append(":");
int mins = calendar.get(Calendar.MINUTE);
appendInt(sbuf, mins, 2);
sbuf.append(":");
int secs = calendar.get(Calendar.SECOND);
appendInt(sbuf, secs, 2);
}
/**
* Write century, year, and months.
* @param sbuf The buffer to append the string.
*/
protected final void writeCCYYMM(StringBuffer sbuf) {
int year = calendar.get(Calendar.YEAR);
appendInt(sbuf, year, 4);
String month;
switch (calendar.get(Calendar.MONTH)) {
case Calendar.JANUARY :
month = "-01-";
break;
case Calendar.FEBRUARY :
month = "-02-";
break;
case Calendar.MARCH :
month = "-03-";
break;
case Calendar.APRIL :
month = "-04-";
break;
case Calendar.MAY :
month = "-05-";
break;
case Calendar.JUNE :
month = "-06-";
break;
case Calendar.JULY :
month = "-07-";
break;
case Calendar.AUGUST :
month = "-08-";
break;
case Calendar.SEPTEMBER :
month = "-09-";
break;
case Calendar.OCTOBER :
month = "-10-";
break;
case Calendar.NOVEMBER :
month = "-11-";
break;
case Calendar.DECEMBER :
month = "-12-";
break;
default :
month = "-NA-";
break;
}
sbuf.append(month);
int day = calendar.get(Calendar.DAY_OF_MONTH);
appendInt(sbuf, day, 2);
}
/**
* Write an integer value with leading zeros.
* @param buf The buffer to append the string.
* @param value The value to write.
* @param length The length of the string to write.
*/
protected final void appendInt(StringBuffer buf, int value, int length) {
int len1 = buf.length();
buf.append(value);
int len2 = buf.length();
for (int i = len2; i < len1 + length; ++i) {
buf.insert(len1, "0");
}
}
}
ISO8601 formatter for date-time without time zone.The format used is yyyy-MM-dd"T"HH:mm:ss.
import java.util.Date;
import org.apache.rumons.lang.time.DateFormatUtils;
public class Main {
public static void main(String[] args) {
Date today = new Date();
String timestamp = DateFormatUtils.ISO_DATETIME_FORMAT.format(today);
System.out.println("timestamp = " + timestamp);
}
}
ISO8601 formatter for date-time with time zone. The format used is yyyy-MM-dd"T"HH:mm:ssZZ.
import java.util.Date;
import org.apache.rumons.lang.time.DateFormatUtils;
public class Main {
public static void main(String[] argv) throws Exception {
Date today = new Date();
String timestamp = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(today);
System.out.println("timestamp = " + timestamp);
}
}
Java SimpleDateFormat Class Example("MM/dd/yyyy")
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String args[]) {
Date date = new Date();
String DATE_FORMAT = "MM/dd/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
System.out.println("Today is " + sdf.format(date));
}
}
new SimpleDateFormat("a"): The am/pm marker
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("a");
String s = formatter.format(new Date());
System.out.println(s);
}
}
new SimpleDateFormat("hh")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("hh");
String s = formatter.format(new Date());
System.out.println(s);
}
}
new SimpleDateFormat("HH.mm.ss")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("HH.mm.ss");
String s = formatter.format(new Date());
System.out.println(s);
}
}
new SimpleDateFormat("hh:mm:ss a")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Date date = new Date();
Format formatter = new SimpleDateFormat("hh:mm:ss a");
String s = formatter.format(date);
System.out.println(s);
}
}
new SimpleDateFormat("HH:mm:ss Z")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("HH:mm:ss Z");
Date date = (Date) formatter.parseObject("22:14:02 -0500");
System.out.println(date);
}
}
new SimpleDateFormat("H") // The hour (0-23)
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("H");
String s = formatter.format(new Date());
System.out.println(s);
}
}
new SimpleDateFormat("mm")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("mm");
String s = formatter.format(new Date());
System.out.println(s);
}
}
new SimpleDateFormat("m"): The minutes
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("m");
String s = formatter.format(new Date());
System.out.println(s);
}
}
new SimpleDateFormat("ss")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("ss");
String s = formatter.format(new Date());
System.out.println(s);
}
}
new SimpleDateFormat("s"): The seconds
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("s");
String s = formatter.format(new Date());
System.out.println(s);
}
}
new SimpleDateFormat("Z")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("Z");
String s = formatter.format(new Date());
System.out.println(s);
}
}
new SimpleDateFormat("z"): The time zone
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("z");
String s = formatter.format(new Date());
System.out.println(s);
}
}
new SimpleDateFormat("zzzz")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("zzzz");
String s = formatter.format(new Date());
System.out.println(s);
}
}
Parse a date and time
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss");
Date date = (Date) formatter.parseObject("2002.01.29.08.36.33");
System.out.println(date);
}
}
Parse date string input with DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.CANADA)
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] argv) throws Exception {
Date date = DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.CANADA).parse("21.33.03");
System.out.println(date);
}
}
Parse string date value input with SimpleDateFormat("dd-MMM-yy")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("dd-MMM-yy");
Date date = (Date) formatter.parseObject("29-Jan-02");
System.out.println(date);
}
}
Parse string date value input with SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
Date date = (Date) formatter.parseObject("Tue, 29 Jan 2004 21:14:02 -0500");
}
}
Parse string date value with default format: DateFormat.getDateInstance(DateFormat.DEFAULT)
import java.text.DateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Date date = DateFormat.getDateInstance(DateFormat.DEFAULT).parse("Feb 28, 2002");
System.out.println(date);
}
}
Parse with a custom format
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("E, dd MMM yyyy", Locale.CANADA);
Date date = (Date) formatter.parseObject("mar., 29 janv. 2002");
}
}
Parse with a default format
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] argv) throws Exception {
Date date = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CANADA).parse("29 janv. 2002");
}
}
Parsing custom formatted date string into Date object using SimpleDateFormat
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");
Date date = sdf.parse("31/12/06");
System.out.println(date);
}
}
//Sun Dec 31 00:00:00 PST 2006
Parsing the Time Using a Custom Format
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
DateFormat formatter = new SimpleDateFormat("hh.mm.ss a");
Date date = (Date) formatter.parse("02.47.44 PM");
System.out.println(date);
}
}
Returns a String in the format Xhrs, Ymins, Z sec, for the time difference between two times
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.InetAddress;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.UnknownHostException;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Collection;
/**
* General string utils
*/
public class StringUtils {
final public static char COMMA = ",";
final public static String COMMA_STR = ",";
final public static char ESCAPE_CHAR = "\\";
private static DecimalFormat oneDecimal = new DecimalFormat("0.0");
/**
*
* Given a finish and start time in long milliseconds, returns a
* String in the format Xhrs, Ymins, Z sec, for the time difference between two times.
* If finish time comes before start time then negative valeus of X, Y and Z wil return.
*
* @param finishTime finish time
* @param startTime start time
*/
public static String formatTimeDiff(long finishTime, long startTime){
StringBuffer buf = new StringBuffer();
long timeDiff = finishTime - startTime;
long hours = timeDiff / (60*60*1000);
long rem = (timeDiff % (60*60*1000));
long minutes = rem / (60*1000);
rem = rem % (60*1000);
long seconds = rem / 1000;
if (hours != 0){
buf.append(hours);
buf.append("hrs, ");
}
if (minutes != 0){
buf.append(minutes);
buf.append("mins, ");
}
// return "0sec if no difference
buf.append(seconds);
buf.append("sec");
return buf.toString();
}
}
SimpleDateFormat("dd-MMM-yy")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("dd-MMM-yy");
String s = formatter.format(new Date());
System.out.println(s);
}
}
Simple Date Format Demo
/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import java.awt.Color;
import java.awt.ruponent;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class SimpleDateFormatDemo extends JPanel {
static JFrame frame;
JLabel result;
String currentPattern;
Date today;
LocaleGroup availableLocales;
public SimpleDateFormatDemo() {
today = new Date();
availableLocales = new LocaleGroup();
String[] patternExamples = { "dd MMMMM yyyy", "dd.MM.yy", "MM/dd/yy",
"yyyy.MM.dd G "at" hh:mm:ss z", "EEE, MMM d, ""yy", "h:mm a",
"H:mm:ss:SSS", "K:mm a,z", "yyyy.MMMMM.dd GGG hh:mm aaa" };
currentPattern = patternExamples[0];
// Set up the UI for selecting a pattern.
JLabel patternLabel1 = new JLabel("Enter the pattern string or");
JLabel patternLabel2 = new JLabel("select one from the list:");
patternLabel1.setAlignmentX(Component.LEFT_ALIGNMENT);
patternLabel2.setAlignmentX(Component.LEFT_ALIGNMENT);
JComboBox patternList = new JComboBox(patternExamples);
patternList.setSelectedIndex(0);
patternList.setEditable(true);
patternList.setAlignmentX(Component.LEFT_ALIGNMENT);
PatternListener patternListener = new PatternListener();
patternList.addActionListener(patternListener);
// Set up the UI for selecting a locale.
JLabel localeLabel = new JLabel("Select a Locale from the list:");
localeLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
JComboBox localeList = new JComboBox(availableLocales.getStrings());
localeList.setSelectedIndex(0);
localeList.setAlignmentX(Component.LEFT_ALIGNMENT);
LocaleListener localeListener = new LocaleListener();
localeList.addActionListener(localeListener);
// Create the UI for displaying result
JLabel resultLabel = new JLabel("Current Date and Time", JLabel.LEFT);
resultLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
result = new JLabel(" ");
result.setForeground(Color.black);
result.setAlignmentX(Component.LEFT_ALIGNMENT);
result.setBorder(BorderFactory.createCompoundBorder(BorderFactory
.createLineBorder(Color.black), BorderFactory.createEmptyBorder(5, 5,
5, 5)));
// Lay out everything
JPanel patternPanel = new JPanel();
patternPanel.setLayout(new BoxLayout(patternPanel, BoxLayout.Y_AXIS));
patternPanel.add(patternLabel1);
patternPanel.add(patternLabel2);
patternPanel.add(patternList);
JPanel localePanel = new JPanel();
localePanel.setLayout(new BoxLayout(localePanel, BoxLayout.Y_AXIS));
localePanel.add(localeLabel);
localePanel.add(localeList);
JPanel resultPanel = new JPanel();
resultPanel.setLayout(new GridLayout(0, 1));
resultPanel.add(resultLabel);
resultPanel.add(result);
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
patternPanel.setAlignmentX(Component.CENTER_ALIGNMENT);
localePanel.setAlignmentX(Component.CENTER_ALIGNMENT);
resultPanel.setAlignmentX(Component.CENTER_ALIGNMENT);
add(patternPanel);
add(Box.createVerticalStrut(10));
add(localePanel);
add(Box.createVerticalStrut(10));
add(resultPanel);
setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
reformat();
} // constructor
/** Listens to the pattern combo box. */
class PatternListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox) e.getSource();
String newSelection = (String) cb.getSelectedItem();
currentPattern = newSelection;
reformat();
}
}
/** Listens to the locale combo box. */
class LocaleListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox) e.getSource();
int index = cb.getSelectedIndex();
availableLocales.setCurrent(index);
reformat();
}
}
/** Manages information about locales for this application. */
class LocaleGroup {
Locale currentLocale;
Locale[] supportedLocales = { Locale.US, Locale.GERMANY, Locale.FRANCE
// Add other locales here, if desired.
};
public LocaleGroup() {
currentLocale = supportedLocales[0];
}
public void setCurrent(int index) {
currentLocale = supportedLocales[index];
}
public Locale getCurrent() {
return currentLocale;
}
public String[] getStrings() {
String[] localeNames = new String[supportedLocales.length];
for (int k = 0; k < supportedLocales.length; k++) {
localeNames[k] = supportedLocales[k].getDisplayName();
}
return localeNames;
}
}
/** Formats and displays today"s date. */
public void reformat() {
SimpleDateFormat formatter = new SimpleDateFormat(currentPattern,
availableLocales.getCurrent());
try {
String dateString = formatter.format(today);
result.setForeground(Color.black);
result.setText(dateString);
} catch (IllegalArgumentException iae) {
result.setForeground(Color.red);
result.setText("Error: " + iae.getMessage());
}
}
public static void main(String s[]) {
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
frame = new JFrame("Date Formatting Demo");
frame.addWindowListener(l);
frame.getContentPane().add("Center", new SimpleDateFormatDemo());
frame.pack();
frame.setVisible(true);
}
}
SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
String s = formatter.format(new Date());
}
}
SimpleDateFormat.getAvailableLocales
/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import java.text.SimpleDateFormat;
import java.util.Locale;
public class Available {
static public void main(String[] args) {
Locale list[] = SimpleDateFormat.getAvailableLocales();
for (int i = 0; i < list.length; i++) {
System.out.println(list[i].toString());
}
for (int i = 0; i < list.length; i++) {
System.out.println(list[i].getDisplayName());
}
for (int i = 0; i < list.length; i++) {
System.out.println(list[i].getDisplayName(Locale.FRANCE));
}
}
}
SimpleDateFormat("MM/dd/yy")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Date date = new Date();
Format formatter = new SimpleDateFormat("MM/dd/yy");
String s = formatter.format(date);
System.out.println(s);
}
}
SimpleDateFormat("MM"): number based month value
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("MM");
String s = formatter.format(new Date());
System.out.println(s);
}
}
SimpleDateFormat("yyyy")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("yyyy");
String s = formatter.format(new Date());
System.out.println(s);
}
}
Simply format a date as "YYYYMMDD"
import java.util.GregorianCalendar;
public class Main {
public static void main(String[] argv) throws Exception {
GregorianCalendar gc = new GregorianCalendar();
gc.setLenient(false);
gc.set(GregorianCalendar.YEAR, 2003);
gc.set(GregorianCalendar.MONTH, 12);
gc.set(GregorianCalendar.DATE, 1);
int m = gc.get(GregorianCalendar.MONTH) + 1;
int d = gc.get(GregorianCalendar.DATE);
String mm = Integer.toString(m);
String dd = Integer.toString(d);
System.out.println(gc.get(GregorianCalendar.YEAR) + (m < 10 ? "0" + mm : mm)
+ (d < 10 ? "0" + dd : dd));
}
}
The day in week: SimpleDateFormat("E")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("E");
String s = formatter.format(new Date());
System.out.println(s);
}
}
The day number: SimpleDateFormat("d")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("d");
String s = formatter.format(new Date());
System.out.println(s);
}
}
The format used is EEE, dd MMM yyyy HH:mm:ss Z in US locale.
import java.util.Date;
import org.apache.rumons.lang.time.DateFormatUtils;
public class Main {
public static void main(String[] argv) throws Exception {
Date today = new Date();
String timestamp = DateFormatUtils.SMTP_DATETIME_FORMAT.format(today);
System.out.println("timestamp = " + timestamp);
}
}
The month: SimpleDateFormat("M")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("M");
String s = formatter.format(new Date());
System.out.println(s);
}
}
The Time and Date Format Suffixes
Suffix Replaced By
a Abbreviated weekday name
A Full weekday name
b Abbreviated month name
B Full month name
c Standard date and time string formatted as day month date hh::mm:ss tzone year
C First two digits of year
d Day of month as a decimal (01-31)
D month/day/year
e Day of month as a decimal (1-31)
F year-month-day
h Abbreviated month name
H Hour (00 to 23)
I Hour (01 to 12)
j Day of year as a decimal (001 to 366)
k Hour (0 to 23)
l Hour (1 to 12)
L Millisecond (000 to 999)
m Month as decimal (01 to 13)
M Minute as decimal (00 to 59)
N Nanosecond (000000000 to 999999999)
P Locale"s equivalent of AM or PM in uppercase
p Locale"s equivalent of AM or PM in lowercase
Q Milliseconds from 1/1/1970
r hh:mm (12-hour format)
R hh:mm (24-hour format)
S Seconds (00 to 60)
s Seconds from 1/1/1970 UTC
T hh:mm:ss (24-hour format)
y Year in decimal without century (00 to 99)
Y Year in decimal including century (0001 to 9999)
z Offset from UTC
Z Time zone name
This is same as MEDIUM: DateFormat.getDateInstance(DateFormat.DEFAULT).format(new Date())
import java.text.DateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
String s = DateFormat.getDateInstance(DateFormat.DEFAULT).format(new Date());
System.out.println(s);
}
}
This is same as MEDIUM: DateFormat.getDateInstance().format(new Date())
import java.text.DateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
String s = DateFormat.getDateInstance().format(new Date());
System.out.println(s);
}
}
Three letter-month value: SimpleDateFormat("MMM")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("MMM");
String s = formatter.format(new Date());
System.out.println(s);
}
}
Time format viewer
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
public class TimeViewer extends JPanel {
protected AbstractTableModel tableModel;
protected Date selectedDate = new Date();
protected final static Locale[] availableLocales;
static {
availableLocales = Locale.getAvailableLocales();
}
public final static int LOCALE_COLUMN = 0;
public final static int SHORT_COLUMN = 1;
public final static int MEDIUM_COLUMN = 2;
public final static int LONG_COLUMN = 3;
public final static int FULL_COLUMN = 4;
public final static String[] columnHeaders = { "Locale", "Short", "Medium", "Long", "Full" };
// Create the window for the Time viewer,
// and make sure that later components will fit
public static void main(String[] args) {
JFrame f = new JFrame("Time Viewer");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(new TimeViewer());
f.pack();
f.setVisible(true);
}
public TimeViewer() {
tableModel = new LocaleTableModel();
JTable table = new JTable(tableModel);
add(new JScrollPane(table));
refreshTable();
}
protected void refreshTable() {
int style = DateFormat.SHORT;
DateFormat parser = DateFormat.getTimeInstance(style);
selectedDate = new Date();
tableModel.fireTableDataChanged();
}
class LocaleTableModel extends AbstractTableModel {
public int getRowCount() {
return availableLocales.length;
}
public int getColumnCount() {
return columnHeaders.length;
}
public Object getValueAt(int row, int column) {
Locale locale = availableLocales[row];
DateFormat formatter = DateFormat.getInstance();
switch (column) {
case LOCALE_COLUMN:
return locale.getDisplayName();
case SHORT_COLUMN:
formatter = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
break;
case MEDIUM_COLUMN:
formatter = DateFormat.getTimeInstance(DateFormat.MEDIUM, locale);
break;
case LONG_COLUMN:
formatter = DateFormat.getTimeInstance(DateFormat.LONG, locale);
break;
case FULL_COLUMN:
formatter = DateFormat.getTimeInstance(DateFormat.FULL, locale);
}
return formatter.format(selectedDate);
}
public String getColumnName(int column) {
return columnHeaders[column];
}
}
}
Two digits day number: SimpleDateFormat("dd")
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] argv) throws Exception {
Format formatter = new SimpleDateFormat("dd");
String s = formatter.format(new Date());
System.out.println(s);
}
}
Use relative indexes to simplify the creation of a custom time and date format.
import java.util.Calendar;
import java.util.Formatter;
public class MainClass {
public static void main(String args[]) {
Formatter fmt = new Formatter();
Calendar cal = Calendar.getInstance();
fmt.format("Today is day %te of %<tB, %<tY", cal);
System.out.println(fmt);
}
}
//Today is day 11 of June, 2008