Java日期和时间
java.util包提供了Date类来封装当前的日期和时间,Date类提供两个构造函数聊实例化Date对象。
Date()//使用当前日期和时间来初始化对象; Date(long millisec)//接收一个参数,该参数是从1970年1月1日起的毫秒数;
创建Date对象后,可调用以下方法:
序号 | 方法和描述 |
1 |
boolean after(Date date) 若当调用此方法的Date对象在指定日期之后返回true,否则返回false |
2 |
boolean before(Date date)
|
3 |
Object clone() 返回此对象的副本 |
4 |
int compareTo(Date date) 比较当调用此方法的Date对象和指定日期,两者相等时候反复0.调用对象在指定日期之前返回负数,在之后返回正数。 |
5 |
int compareTo(Object object) 若object是Date类型则操作同等于compareTo(Date date),否则抛出ClassCastException |
6 |
boolean equals(Object object) 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false |
7 |
long getTime() 返回自1970年1月1日 00:00:00GMT以来此Date对象表示的毫秒数 |
8 |
int hashTime() 返回此对象的哈希码值 |
9 |
void setTime(long time) 用自1970年1月1日 00:00:00GMT以后time毫秒数设置日期和时间 |
10 |
String toString() 把此Date对象转换为以下形式的String:dow mon dd hh:mm:ss zzz yyyy其中dow是一周中的某天(Sun,Mon,Tue,Wed,Thu,Fri,Sat) |
获取当前日期时间
import java.util.Date; public class DateDemo{ public static void main(String args[]){ Date date = new Date();//初始化Date对象 System.out.println(date.toString());//使用toString()函数显示日期时间 } }
运行结果
Tue Sep 03 22:49:12 CDT 2019
——————————————————————————
日期比较(三种方法)
1.getTime()方法获取两个日期,然后比较两个日期的值;
2.before(),after(),equals();例如:一个月的12号比18号早,则new Date(99,2,12).before(new Date(99,2,18))返回true;
3.compreTo()方法,由Comparable接口定义的,Date类实现了这个接口;
——————————————————————————————————————
使用SimpleDateFormat格式化日期
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类,SimpleDateFormat允许你选择任何用户自定义日期时间来运行,例如:
import java.util.*; import java.text.*; public class DateDemo{ public static void main(String args[]){ Date nowDate = new Date(); SimpleDateFormat ft =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//确立转换格式 System.out.println(ft.format(nowDate)); } }
运行结果
2019-09-03 23:11:51
——————————————————————
使用print格式化日期
以%t开头以字母(以下的字母)结尾
转换符 | 说明 | 事例 |
c | 包括全部日期和时间信息 | 星期二 九月 03 23:23:12 CST 2019 |
F | "年-月-日"格式 | 2019-09-05 |
D | “月/日/年”格式 | 10/23/05 |
r | “HH:MM:SS PM”格式,12小时 | 05:25:51 下午 |
T | “HH:MM:SS”格式,24小时 | 05:25:51 |
R | "HH:MM"格式,24小时 | 05:25 |
事例:
import java.util.Date; public class DateDemo{ public static void main(String args[]){ Date date =new Date(); System.out.println("HH:MM:SS格式:%tT%n",date); } }
运行结果
HH:MM:SS格式:23:20:12
另外:
重复提供日期 ,可以利用一个格式化字符串之处要被格式化的参数索引
索引跟在%后面,而且必须以$结束("%1$d",...)
或者,使用<标志,表示先前被格式化的参数再次被使用("%s %<te",...)
_________________________________
解析字符串为时间
SimpleDateFormat类的parse()方法
import java.util.*; import java.text.*; public class DateDemo{ public static void main(String args[]){ SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); String input = "1818-11-11"; System.out.println(input); Date t; try{ t = ft.parse(input); System.out.println(t); }catch(ParseException e){ System.out.println(ft); } } }
运行结果
1818-11-11
Wed Nov 11 00:00:00 UTC 1818
——————————————————————————
休眠:sleep()使当前线程进入停滞状态,,让出CPU的使用、目的是不让当前线程独自霸占该进程所获得的CPU资源,留一定时间给其他线程执行机会。
休眠3秒:
import java.util.*; public class SleepDemo{ public static void main(String args[]){ try{ System.out.println(new Date()+"\n"); Thread.sleep(1000*3);//休眠三秒 System.out.println(new Date()+"\n"); }catch(Exception e){ System.out.println("zzz"); } } }
运行结果
Thu Sep 17 02:44:50 UTC 2015
Thu Sep 17 02:44:53 UTC 2015
————————————————————————————————
测量时间间隔(单位:毫秒)
import java.utill.*; public class Demo{ public static void main(String args[]){ try{ long start = System.currentTimeMillis(); System.out.println(new Date()+"\n"); Thread.sleep(5*60*10); System.out.println(new Date()+"\n"); long end = System.currentTimeMillis(); long diff = end - start; System.out.println(diff); }catch(Exception e){ System.out.println("……"); } } }
运行结果
Thu Sep 17 02:43:18 UTC 2015
Thu Sep 17 02:43:21 UTC 2015
3031
——————————————————————
Calendar类
抽象类,比Date类的功能要强大
Calendar a = Calendar.getInstance();//创建一个Calendar对象,默认当前系统日期
Calendar a = Calendar.getInstance(); a.set(2019,9-1,18);//创建一个指定日期(2019年9月18日)的Calendar对象,
量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
Calendar类对象信息的设置
set设置
1.Calendar c = Calendar.getInstance();
2.public final void set(int year,int month,int date)
3.c.set(2019,9,18)
add设置
1.Calendar c = Calendar.getInstance();
2.c.add(Calendar.DATE,10);//c对象的日期加上10,c表示为10天后的日期,其他只也会重新计算
GregorianCalendar类
Calendar类实现公历日历,GregorianCalendar类是Calendar类的一个具体实现。