DateFormat and SimpleDateFormat

http://www.studytrails.com/java/date/java-DateFormat-SimpleDateFormat.jsp

java.text.DateFormat - This is an abstract class and provider methods to obtain an instance using a locale or formatting style. Look at the examples below for more details.

java.text.SimpleDateFormat - This class provides methods for parsing (text->date) and formatting (date->text) date in a locale sensitive manner. The parse method allows parsing data in any user defined format. Here are some rules that are helpful :

  • For formatting text, if the number of repeating pattern letters is 4 or more, then the full form is used, else abbreviation is used.
  • for formatting digits, the number of repeating pattern letters determines the minumum number of digits. if the value is less than this then the numbers are padded.
  • For month if the number of pattern letters is three or more a text value is used for month, otherwise a number value is used.
Next let us look at examples

Create Instances of DateFormat

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// create a date object for testing
Date date = new Date();
// create a date instance using default style
DateFormat format = DateFormat.getDateInstance();
System.out.println(format.format(date)); // 29 Jul, 2013
 
// create a dateinstance using short style
format = DateFormat.getDateInstance(DateFormat.SHORT);
System.out.println(format.format(date)); // 29/7/13
 
// create a dateinstance using medium style (Default)
format = DateFormat.getDateInstance(DateFormat.MEDIUM);
System.out.println(format.format(date)); // 29 Jul, 2013
 
// create a dateinstance using full style (Default)
format = DateFormat.getDateInstance(DateFormat.FULL);
System.out.println(format.format(date)); // Monday, 29 July, 2013
 
// create a dateinstance using long style (Default)
format = DateFormat.getDateInstance(DateFormat.LONG);
System.out.println(format.format(date)); // 29 July, 2013
 
// create time instance - default
format = DateFormat.getTimeInstance();
System.out.println(format.format(date)); // 8:24:59 PM
 
// create time instance - short
format = DateFormat.getTimeInstance(DateFormat.SHORT);
System.out.println(format.format(date)); // 8:26 PM
 
// create time instance - medium
format = DateFormat.getTimeInstance(DateFormat.MEDIUM);
System.out.println(format.format(date)); // 8:26:21 PM
 
// create time instance - full
format = DateFormat.getTimeInstance(DateFormat.FULL);
System.out.println(format.format(date)); // 8:26:21 PM IST
 
// create time instance - long
format = DateFormat.getTimeInstance(DateFormat.LONG);
System.out.println(format.format(date)); // 8:26:21 PM IST
 
// create date time instance - default.
format = DateFormat.getDateTimeInstance();
System.out.println(format.format(date)); // 29 Jul, 2013 8:27:22 PM
 
// create date time instance - specify format and locale.
format = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.GERMAN);
System.out.println(format.format(date)); // Montag, 29. Juli 2013 20:57 Uhr IST

Print Date in different timezone (e.g UTC)

?
1
2
3
format = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
format.setTimeZone(TimeZone.getTimeZone( "UTC" ));
System.out.println(format.format(date)); // Monday, 29 July, 2013 3:29:45 PM UTC

Parse date string (including ISO 8601 format)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
try {
     // parsing date yyyy-MM-dd HH:mm:ss
     SimpleDateFormat simpleFormat = (SimpleDateFormat) DateFormat.getDateInstance();
     simpleFormat.applyPattern( "yyyy-MM-dd HH:mm:ss" );
 
     // parse date 2013-04-12 10:02:12
     date = simpleFormat.parse( "2013-04-12 10:02:12" );
     System.out.println(date); // Fri Apr 12 10:02:12 IST 2013
 
     // parsing "1 April 2013 at 10:00 AM EST"
     simpleFormat.applyPattern( "dd MMMMM yyyy 'at' HH:mm a z" );
     date = simpleFormat.parse( "1 April 2013 at 10:00 AM EST" );
     System.out.println(date); // Mon Apr 01 20:30:00 IST 2013
     System.out.println(simpleFormat.getTimeZone().getID()); // America/New_York
 
     // parsing 1-Apr-13 23:22:00+500
     simpleFormat.applyPattern( "dd-MMM-yy HH:mm:ssZ" );
     date = simpleFormat.parse( "1-Apr-13 23:22:00+0500" );
 
     format.setTimeZone(simpleFormat.getTimeZone());
     System.out.println(format.format(date)); // Monday, 1 April, 2013
                                             // 2:22:00 PM EDT
 
     // parse 2013-07-29T18:00:00-04:00 ISO 8601 format
     simpleFormat.applyPattern( "yyyy-MM-dd'T'HH:mm:ssXXX" );
     date = simpleFormat.parse( "2013-07-29T18:00:00-04:00" );
     
     format.setTimeZone(simpleFormat.getTimeZone());
     System.out.println(format.format(date)); //Monday, 29 July, 2013 6:00:00 PM EDT
 
} catch (Exception e) {
     e.printStackTrace();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值