一.Date类
java.util 包提供了 Date 类来封装当前的日期和时间。
1.构造方法
- 使用当前日期和时间来初始化对象。
Date( )
- 接收一个参数,该参数是从1970年1月1日起的毫秒数。
Date(long millisec)
2.Data对象方法
- 若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
boolean after(Date date)
- 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
boolean before(Date date)
- 返回此对象的副本。
Object clone( )
- 比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
int compareTo(Date date)
- 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
boolean equals(Object date)
- 返回自 1970 年 1 月 1 日 00:00:00 GMT 的毫秒数。
long getTime( )
- 用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
void setTime(long time)
- 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
String toString( )
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 对象
Date date = new Date();
// 使用 toString() 函数显示日期时间
System.out.println(date.toString());
}
}
//运行结果
Mon May 04 09:51:52 CDT 2013
3.使用 SimpleDateFormat 格式化日期
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
System.out.println("当前时间为: " + ft.format(dNow));
}
}
//当前时间为: 2018-09-06 10:16:34
上面的代码是一个简单使用的代码。
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。
SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。
注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。
日期和时间的格式化编码
4.使用printf格式化日期
printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。
import java.util.Date;
public class DateTest {
public static void main(String[] args){
Date date = new Date();
//c的使用
System.out.printf("全部日期和时间信息:%tc%n",date);
//f的使用
System.out.printf("年-月-日格式:%tF%n",date);
//d的使用
System.out.printf("月/日/年格式:%tD%n",date);
//r的使用
System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);
//t的使用
System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);
//R的使用
System.out.printf("HH:MM格式(24时制):%tR",date);
}
}
//运行结果
全部日期和时间信息:星期四 八月 15 10:53:48 CST 2019
年-月-日格式:2019-08-15
月/日/年格式:08/15/19
HH:MM:SS PM格式(12时制):10:53:48 上午
HH:MM:SS格式(24时制):10:53:48
HH:MM格式(24时制):10:53
5.sleep休眠
sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会。
import java.util.*;
public class SleepDemo {
public static void main(String args[]) {
try {
System.out.println(new Date( ) + "\n");
Thread.sleep(1000*3); // 休眠3秒
System.out.println(new Date( ) + "\n");
} catch (Exception e) {
System.out.println("Got an exception!");
}
}
}
二.Calendar类
我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
1.创建一个代表系统当前日期的Calendar对象
Calendar c = Calendar.getInstance();//默认是当前日期
2.创建一个指定日期的Calendar对象
//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);
3.Calendar类对象字段类型
4.Calendar类对象信息的设置
- 总的设置
public final void set(int year,int month,int date)
- 某个字段的设置
public void set(int field,int value)
- 某个字段的更改
public void add(int field,int value)
- 获得某个字段
public int get(int field)
- 代码例子
Calendar c = Calendar.getInstance();
c.set(2009, 6 - 1, 12);
c.set(Calendar.DATE,10);
//c表示为10天后的日期
c.add(Calendar.DATE, 10);
//c表示为10天前的日期
c1.add(Calendar.DATE, -10);
//获得年份
int year = c.get(Calendar.YEAR);