在应用程序设计中,经常会需要显示时间和日期。如果想输出满意的日期时间格式,一般需要编写大量的代码经过各种算法才能实现。format()方法通过给定的特殊转换符作为参数来实现对日期和时间的格式化。
先来看下面的代码。
例 返回一个月中的天数,实例代码如下:
Date date = new Date(); //创建Date对象date
String s = String.format("%te", date); //通过format()方法对date进行格式化
上述代码变量s的值是当前日期中的天数,如今天是15号,则s的值为15。“%te”是转换符,常用的日期和时间的格式转换符如表1所示。
表1 常见的日期时间转换符
转换符 |
说明 |
示例 |
%te |
一个月中的某一天(1-31) |
2 |
%tb |
指定语言环境的月份简称 |
Feb(英文)、二月(中文) |
%tB |
指定语言环境的月份全称 |
February(英文)、二月(中文) |
%tA |
指定语言环境的星期几全称 |
Monday(英文)、星期一(中文) |
%ta |
指定语言环境的星期几简称 |
Mon(英文)、星期一(中文) |
%tc |
包括全部日期和时间信息 |
星期二 三月 25 13:37:22 CST 2008 |
%tY |
4位年份 |
2008 |
%tj |
一年中的第几天(001-366) |
085 |
%tm |
月份 |
03 |
%td |
一个月中的第几天(01-31) |
02 |
%ty |
二位年份 |
08 |
例 在项目中创建类Eval,实现将当前日期信息以4位年份、月份全称、2位日期形式输出。
import java.util.Date; //导入java.util.Date类
public class Eval { //新建类
public static void main(String[] args) { //主方法
Date date = new Date(); //创建Date对象date
String year = String.format("%tY", date); //将date进行格式化
String month = String.format("%tB", date);
String day = String.format("%td", date);
System.out.println("今年是:" + year + "年");//输出信息
System.out.println("现在是:" + month);
System.out.println("今天是:" + day + "号");
}
}
运行的结果如图1所示:
图1 运行结果
使用format()方法不但可完成日期的格式化,也可实现时间的格式化。时间格式化转换符要比日期转换符更多、更精确。它可以将时间格式化成时、分、秒、毫秒。格式化时间的转换符如表2所示。
表2 时间格式化转化符
转换符 |
说明 |
示例 |
%tH |
2位数字的24时制的小时(00-23) |
14 |
%tI |
2位数字的12时制的小时(01-12) |
05 |
%tk |
2位数字的24时制的小时(0-23) |
5 |
%tl |
2位数字的12时制的小时(1-12) |
10 |
%tM |
2位数字的分钟(00-59) |
05 |
%tS |
2位数字的秒数(00-60) |
12 |
%tL |
3位数字的毫秒数(000-999) |
920 |
%tN |
9位数字的微秒数(000000000-999999999) |
062000000 |
%tp |
指定语言环境下上午或下午标记 |
下午(中文)、pm(英文) |
%tz |
相对于GMT RFC 82 格式的数字时区偏移量 |
+0800 |
%tZ |
时区缩写形式的字符串 |
CST |
%ts |
1970-01-01 00:00:00至现在经过的秒数 |
1206426646 |
%tQ |
1970-01-01 00:00:00至现在经过的毫秒数 |
1206426737453 |
例 在项目中创建类GetDate,实现将当前时间信息以2位小时、2位分钟数2位秒数形式输出。
import java.util.Date; //导入java.util.Date类
public class GetDate { //新建类
public static void main(String[] args) { //主方法
Date date = new Date(); //创建Date对象date
String hour = String.format("%tH", date); //将date进行格式化
String minute = String.format("%tM", date);
String second = String.format("%tS", date);
System.out.println("现在是:" + hour + "时" + minute + "分" + second + "秒");//输出的信息
}
}
运行的结果如图2所示。
图2 运行结果
格式化日期与时间的转换符定义了各种格式日期字符串的方式,其中最常用的日期和时间的组合格式如表3所示。
表3 常见的日期和时间组合的格式
转换符 |
说明 |
示例 |
%tF |
“年-月-日”格式(四位年份) |
|
%tD |
“月/日/年”格式(二位年份) |
|
%tc |
全部日期和时间信息 |
星期二 三月 25 15:20:00 CST 2008 |
%tr |
“时:分:秒 PM(AM)”格式(12时制) |
03:22:06 下午 |
%tT |
“时:分:秒”格式(24时制) |
15:23:50 |
%tR |
“时:分”格式(24时制) |
15:25 |
例 在项目中创建类DateAndTime,在主方法中实现将当前日期时间的全部信息以及指定格式的日期输出。
import java.util.Date; //导入java.util.Date类
public class DateAndTime { //创建类
public static void main(String[] args) { //主方法
Date date = new Date(); //创建Date对象date
String time = String.format("%tc", date); //将date格式化
String form = String.format("%tF", date);
System.out.println("全部的时间信息是:" + time);//将格式化后的日期时间输出
System.out.println("年-月-日格式:"+form);
}
}
运行结果如图3所示。
图3 运行结果