JDK8之前日期时间API
# 简图
# System
类
所属包:java.lang.System
System类提供的public static long currentTimeMillis()
用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。也称为时间戳。
此方法适于计算时间差。
计算世界时间的主要标准有:
- UTC(Coordinated Universal Time)
- GMT(Greenwich Mean Time)
- CST(Central Standard Time)
@Test
public void test1() {
long time = System.currentTimeMillis();
System.out.println("time = " + time);
}
1
2
3
4
5
2
3
4
5
# Date
类
所属包:java.util.Date
表示特定的瞬间,精确到毫秒。
- 构造器:
Date()
:使用无参构造器创建的对象可以获取本地当前时间。Date(long date)
:创建指定毫秒数的Date对象。
- 常用方法
getTime()
:返回自1970 年1 月1 日00:00:00 GMT 以来此Date 对象表示的毫秒数。也称为时间戳。toString()
:把此Date 对象转换为以下形式的String:dow mon dd hh:mm:sszzzyyyy其中:dow是一周中的某一天(Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。- 其它很多方法都过时了。
java.sql.Date
java.sql.Date是java.util.Date的子类。对应着数据库中日期类型的变量。
如何实例化对象?
Date(long date)
:创建指定毫秒数的Date对象。
如何相互转换?
Date date1 = java.sql.Date(3452345235L);
java.sql.Date date2 = new java.sql.Date(date1.getTime());
1
2
2
# SimpleDateFormat
类
所属包:java.text.SimpleDateFormat
Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
它有2个操作,允许进行格式化和解析。
格式化:日期->文本、
解析:文本->日期。
格式化:
SimpleDateFormat()
:默认的模式和语言环境创建对象public SimpleDateFormat(String pattern)
:该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用:public String format(Date date)
:方法格式化时间对象date
解析:
public Date parse(String source)
:从给定字符串的开始解析文本,以生成一个日期。
练习:
@Test
public void test3() {
Date date = new Date();
SimpleDateFormat formater1 = new SimpleDateFormat();
System.out.println("formater1.format(date) = " + formater1.format(date));
SimpleDateFormat formater2 = new SimpleDateFormat("yyyy年MM月dd日 EEE HH:mm:ss");
System.out.println("formater2.format(date) = " + formater2.format(date));
try {
Date date2 = formater2.parse("2008年08月08日 星期一 08:08:08");
System.out.println("date2 = " + date2);
} catch (ParseException e) {
e.printStackTrace();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# Calendar
类
所属包:java.util.Calendar
Calendar
是一个抽象基类,主用用于完成日期字段之间相互操作的功能。(日历)
获取Calendar实例的方法:
- 使用
Calendar.getInstance()
方法 - 调用它的子类
GregorianCalendar
的构造器。
常用方法:
get(int field)
- 一个Calendar的实例是系统时间的抽象表示,通过该方法来取得想要的时间信息。
- field是指时间类型,比如YEAR、MONTH、DAY_OF_WEEK、DAY_OF_MONTH、HOUR_OF_DAY 、MINUTE、SECOND,等等……
public void set(int field,int value)
- 设置时间
public void add(int field,int amount)
- amount为正数,增加时间。
- amount为负数,减少时间。
public final Date getTime()
- 根据日历类获取Date时间。
public final void setTime(Date date)
- 把Date设置为日历类。
注意:
- 获取月份时:一月是0,二月是1,以此类推,12月是11
- 获取星期时:周日是1,周二是2,。。。。周六是7
练习:java
@Test
public void test4() {
Calendar calendar = Calendar.getInstance();
// 从一个Calendar 对象中获取Date 对象
Date date = calendar.getTime();
// 使用给定的Date 设置此Calendar 的时间
date = new Date(234234235235L);
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 8);
System.out.println("当前时间日设置为8后,时间是:" + calendar.getTime());
calendar.add(Calendar.HOUR, 2);
System.out.println("当前时间加2小时后,时间是:" + calendar.getTime());
calendar.add(Calendar.MONTH, -2);
System.out.println("当前日期减2个月后,时间是:" + calendar.getTime());
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
帮我改善此页面 (opens new window)
上次更新: 2020/12/24, 02:52:47