原文传送门:http://solodu.javaeye.com/blog/454546
JDK1.5中,String类新增了一个很有用的静态方法String.format():现有一个时间'20090903'要转化成指定时间的java.util.Date格式
private Date getStartGregorianTime(String date) {
Date d_date = DateUtil.parseDate(date);
int year = new Integer(String.format("%tY", d_date));
int month = new Integer(String.format("%tm", d_date));
int day = new Integer(String.format("%td", d_date));
return new GregorianCalendar(year, month-1, day, 0, 0, 0).getTime();
}
private Date getEndGregorianTime(String date) {
Date d_date = DateUtil.parseDate(date);
int year = new Integer(String.format("%tY", d_date));
int month = new Integer(String.format("%tm", d_date));
int day = new Integer(String.format("%td", d_date));
return new GregorianCalendar(year, month-1, day, 23, 59, 59).getTime();
}
以下为String format()中参数的定义:
日期/时间转换
以下日期和时间转换的后缀字符是为 't' 和 'T' 转换定义的。这些类型相似于但不完全等同于那些由 GNU date 和 POSIX strftime(3c) 定义的类型。提供其他转换类型是为了访问特定于 Java 的功能(如将 'L' 用作秒中的毫秒)。
以下转换字符用来格式化时间:
'H' 24 小时制的小时,被格式化为必要时带前导零的两位数,即 00 - 23。
'I' 12 小时制的小时,被格式化为必要时带前导零的两位数,即 01 - 12。
'k' 24 小时制的小时,即 0 - 23。
'l' 12 小时制的小时,即 1 - 12。
'M' 小时中的分钟,被格式化为必要时带前导零的两位数,即 00 - 59。
'S' 分钟中的秒,被格式化为必要时带前导零的两位数,即 00 - 60 ("60" 是支持闰秒所需的一个特殊值)。
'L' 秒中的毫秒,被格式化为必要时带前导零的三位数,即 000 - 999。
'N' 秒中的毫微秒,被格式化为必要时带前导零的九位数,即 000000000 - 999999999。
'p' 特定于语言环境的 上午或下午 标记以小写形式表示,例如 "am" 或 "pm"�