Java基础:日期和时间

来源:互联网 发布:炒股软件销售 编辑:程序博客网 时间:2024/05/21 12:39

Date

构造方法

Date date1 = new Date();Date date2 = new Date(long l);Date date3 = new Date(int year, year month, int day);

其中第三种已经过时了。

Date date1 = new Date();Date date2 = new Date(2000, 11, 20);Date date6 = new Date(60935385600000L);//值分别是//Thu Jun 22 10:58:45 CST 2017//Thu Dec 20 00:00:00 CST 3900//Thu Dec 20 00:00:00 CST 3900

常用方法

before(Date date) + after(Date date)

日期是不是在参数前,返回boolean

boolean before = date1.before(date2);// trueboolean after = date1.after(date2);// false

clone()

复制日期

Date date3 = (Date) date1.clone()

date1date3是相等的。

compate(Date date)

比较2个日期,返回int。
a.compateTo(b)若a在b前,返回负数;若a在b后,返回整数;若相等,返回0;正负数一般是-1,1。

int compareTo1 = date1.compareTo(date2);// -1int compareTo2 = date1.compareTo(date3);// 0int compareTo3 = date1.compareTo(date4);// 1

equal(Date date)

比较日期是否相等,返回boolean。

boolean equals1 = date1.equals(date2);// falseboolean equals2 = date1.equals(date3);// true

Date 和long之间的转换

Date转long

long time1 = date1.getTime();long time2 = date2.getTime();

long转Date

Date date5 = new Date(time1);

SimpleDateFormat

格式化日期的类。

日期和时间模式

这里写图片描述

构造方法

SimpleDateFormat sdf1 = new SimpleDateFormat();SimpleDateFormat sdf1 = new SimpleDateFormat(Strign pattern);

pattern一般有

"YYYY-mm-dd HH:mm:ss"

常用方法

格式化日期

将Date格式化为我们需要的样式String,将String类型的日期转成Date,需要用到2个方法

format(date1);parse(String);

format():Date转换成String类型的日期

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String format1 = sdf1.format(date1);// 2017-06-22 13:54:11

String类型的日期转换成Date

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date parse1 = sdf1.parse("2017-06-22 11:59:40");

printf()

采用printf()格式化日期,已%t开始,%n表示换行
这里写图片描述

System.out.printf("%tc%n", date1); // 星期四 六月 22 14:38:08 CST 2017System.out.printf("%tF%n", date1);// 2017-06-22System.out.printf("%tD%n", date1);// 06/22/17System.out.printf("%tr%n", date1);// 02:41:40 下午System.out.printf("%tT%n", date1);// 14:41:40System.out.printf("%tR%n", date1);// 14:41

sleep()

让线程休眠,可以计算耗时

int sum = 0;long time5 = System.currentTimeMillis();try {    Thread.sleep(3000);} catch (InterruptedException e) {    e.printStackTrace();}long time6 = System.currentTimeMillis();System.out.println("耗时:" + (time6 - time5));

Calendar

日历,可以和方便的设置日期和时间,获取年月日等数据。
Calendar是个抽象类

构造方法

Calendar calendar = Calendar.getInstance();

常用方方法

设置日期和时间

月份是从0-11,也就是说0是一月;11是十二月。

calendar.setTime(date1);calendar.setTimeInMillis(1234567890l);calendar.set(2008, 8, 8, 8, 8,8);//9月calendar.set(2008, 8, 8);

也可以值设置当个字段

calendar.set(Calendar.YEAR, 2008);calendar.set(Calendar.MONTH, 8);calendar.set(Calendar.DAY_OF_MONTH, 8);calendar.set(Calendar.HOUR_OF_DAY, 8);calendar.set(Calendar.MINUTE, 8);calendar.set(Calendar.SECOND, 8);

add()和get()

add()某个字段加数字,可以是负数。正数表示日期加,负数表示日期减。
月份提前2个月

calendar.add(Calendar.DAY_OF_MONTH, -2);

获取年份

int year = calendar.get(Calendar.YEAR);

获取Date

Date date = calendar.getTime();

GregorianCalendar

是Calendar的子类

GregorianCalendar gregorianCalendar = new GregorianCalendar();
Date time = gregorianCalendar.getTime();