One of the more powerful conversion specifiers is %t.
It lets you format time and date information.
The %t specifier requires the use of a suffix to describe the portion and precise format of the time or date desired.
The suffixes are shown in the following table.
| 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 lowercase |
| Q | Milliseconds from 1/1/1970 |
| r | hh:mm:ss (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 |
For example, to display minutes, you would use %tM, where M indicates minutes in a two-character field.
The argument corresponding to the %t specifier must be of type Calendar, Date, Long, or long.
Here is a program that demonstrates several of the formats:
// Formatting time and date. import java.util.Calendar; import java.util.Formatter; public class Main { public static void main(String args[]) { Formatter fmt = new Formatter(); Calendar cal = Calendar.getInstance(); // Display standard 12-hour time format. fmt.format("%tr", cal); System.out.println(fmt);/*w ww . d e m o 2 s . c o m*/ fmt.close(); // Display complete time and date information. fmt = new Formatter(); fmt.format("%tc", cal); System.out.println(fmt); fmt.close(); // Display just hour and minute. fmt = new Formatter(); fmt.format("%tl:%tM", cal, cal); System.out.println(fmt); fmt.close(); // Display month by name and number. fmt = new Formatter(); fmt.format("%tB %tb %tm", cal, cal, cal); System.out.println(fmt); fmt.close(); } }
Sample output is shown here: