在 Java 中,关于时间的表示一般是通过创建 Date 类的对象。既然是类,那么创建其对象的方法就很简单啦,我们看到,该类有两个构造方法:一个不提供参数,默认根据系统目前的时间来创建对象;另一个是提供一个 long 类型的参数,其表示从 1970 年 1 月 1 日起的毫秒数。以下为创建的例子。
Date date = new Date();
Date date = new Date(long along);
该类也提供了一些方法为我们使用,常见的方法如下:
//调用该方法的 Date 对象在参数时间之后,则返回 true ,否则返回 false
boolean after(Date date)
//调用该方法的 Date 对象在参数时间之前,则返回 true ,否则返回 false
boolean before(Date date)
//比较两个时间,相等则返回 0 ,调用该方法的对象在参数时间之前则返回负数,之后返回正数。
int compareTo(Date date)
//当调用该方法的 Date对象和参数日期相等则返回 true ,否则返回 false
boolean equals(Object date)
//把该 Date 对象转换为 String 形式(年月日 时分秒等表示)
String toString()
以上方法基本满足了我们对日期的操作,因为我们一般对日期的操作无非就是输出时间,或者对比两个时间。但这里有个问题:这里的输出时间它的格式是怎么样的?我们是否可以自己设计输出的形式(这里讲的是时间输出时的形式,是“年月日”?还是“日月年”?连接符是“汉字”,还是“-”等等)。
我们先来看看 toString 输出的格式:
public class Test {
public static void main(String[] arg){
Date date = new Date();
System.out.println(date.toString());
}
}
Fri Jan 07 19:49:21 CST 2022
我以我当前的时间为例,输出的格式是上面这样的,这种方式一来不适合我们的习惯,二来也无法改变形式,确实不够友好。因此我们引入了 SimpleDateFormat 类用于格式化显示时间。
public class Test {
public static void main(String[] arg){
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
System.out.println("当前时间为: " + ft.format(dNow));
}
}
当前时间为: 2022-01-07 07:51:52
上面这种方式的显示很显然更符合我们的习惯,而且更重要的是,我们同样可以自己定制,只需要用到字母作为占位符就好了(注意:字母是区分大小写的),其它的字符则可以根据自己的需要设计,它会自己显示出来的。
常用的字母其实不多,一般用到的有:
G
表示是公元前还是公元后 BC/AD
yyyy
一般四位出现,表示四位的年份 2012
MM
一般两位出现,表示月份 09
dd
一般两位出现,表示日期 20
hh
一般两位出现,表示12小时制的“时” 08
HH
一般两位出现,表示24小时制的“时” 17
mm
一般两位出现,表示分钟数 20
ss
一般两位出现,表示秒数 30
SS
一般两位出现,表示毫秒数 26
E
一般一位出现,表示星期几 星期五