来源:http://blog.sina.com.cn/s/blog_733d71ec0100p2qx.html
- public
static final FastDateFormat ISO_DATE_FORMAT -
= FastDateFormat.getInstance("yyyy-MM-dd");
上面的final 字段代表一个不可变的FastDateFormat,然而要让FastDateFormat字段真正的不可变,FastDateFormat内部必须遵循相应的规则才可以。
不要提供能修改对象状态的方法 确保类不会被继承
让所有字段都成为static final字段
确保所有可变的组件不能被访问
格式化日期
问题提出:SimpleDateFormat是非线程安全的,而您又需要一个ISO格式的日期。
解决方法:使用FastDateFormat或者使用DateFormatUtils提供的静态FastDateFormat实例,它提供了一些格式化日期的线程安全的方法。
使用举例:
如果您想使用传统的格式化类型,可以用 FastDateFormat来代替SimpleDateFormat,
FastDateFormat
String
System.out.println(output);
Discussion:In fact, you should be aware that none of the Sun formatting classes are thread-safe.
Name | Format |
---|---|
ISO_DATE_FORMAT | yyyy-MM-dd"2004-01-02" |
ISO_DATE_TIME_ZONE_FORMAT | yyyy-MM-ddZZ"2004-01-02-07:00" |
ISO_DATETIME_FORMAT | yyyy-MM-dd'T'HH:mm:ss"2004-01-02T23:22:12" |
ISO_DATETIME_TIME_ZONE_FORMAT | yyyy-MM-dd'T'HH:mm:ssZZ"2004-01-02T21:13:45-07:00" |
ISO_TIME_FORMAT | 'T'HH:mm:ss"T04:23:22" |
ISO_TIME_NO_T_FORMAT | HH:mm:ss"05:12:34" |
ISO_TIME_NO_T_TIME_ZONE_FORMAT | HH:mm:ssZZ"12:32:22-07:00" |
ISO_TIME_TIME_ZONE_FORMAT | 'T'HH:mm:ssZZ"T18:23:22-07:00" |
SMTP_DATETIME_FORMAT | EEE, dd MMM yyyy HH:mm:ss Z"Wed, 01 Feb 2004 20:03:01 CST" |