一、System类
1.所属的包java.lang包 不需要导入
2.不需要创建对象 通过类名就可以访问
3.有三个属性及若干的方法
三个属性out in err
方法gc() exit(0); currentTimeMillis();
public class TestDate {
public static void main(String[] args){
//返回当前系统时间与计算机元年之间的毫秒差
//1970-1-1 00:80:00
long time = System.currentTimeMillis();
System.out.println(time);
//可用来计算循环的时间
}
}
二、Date类
java.util.Date
1.通常使用的是java.util包
2.导包后拿来使用 ,需要构建对象
3.通常使用无参数的构造方法或者带long构造方法
4.Date类中常用的方法
before(); after();
setTime() getTime();----->long
compareTo(); -1 1 0
5.可以处理一个Date日期的格式
import java.util.Date;
public class TestDate {
public static void main(String[] args){
//返回当前系统时间与计算机元年之间的毫秒差
//1970-1-1 00:80:00
long time = System.currentTimeMillis();
System.out.println(time);
//1562853912201
//Date输出的时间格式是格林威治格式的时间
Date date1 = new Date(1562853912201L);//输出与计算机元年相隔Long毫秒的格林威治格式的时间
Date date2 = new Date();//输出运行此行代码的格林威治格式的时间
System.out.println("date1 :"+date1);
System.out.println("date2 :"+date2);
boolean a = date1.after(date2);//判断date1 是否在date2 之后
boolean b = date1.before(date2);//判断date1 是否在date2 之前
System.out.println(a);
System.out.println(b);
date1.setTime(1562854624843L);//更改date1的时间
System.out.println("改变后的date1:"+date1);
long date1New = date1.getTime();//获取date1的时间 毫秒值
System.out.println("date1为:"+ date1New);
int c = date1.compareTo(date2);//按照索引顺序比较 -1表示调用在前参数在后 1刚好相反
System.out.println(c);
}
}
输出结果:
1562855208934
date1 :Thu Jul 11 22:05:12 CST 2019
date2 :Thu Jul 11 22:26:48 CST 2019
false
true
改变后的date1:Thu Jul 11 22:17:04 CST 2019
date1为:1562854624843
-1
三、DateFormat类
java.text.DateFormat
1.包java.text,需要导包使用
2.此类是一个抽象类,不能创建对象 ,需要通过子类来使用
3.SimpleDateFormat类是DateFormat的子类
4.调用带String参数的构造方法创建format对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String v = sdf.format(date1);//通过sdf对象将date1格式化成你描述的样子
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args){
Date date1 = new Date();
System.out.println(date1);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//描述需要的时间格式
String sdf = simpleDateFormat.format(date1);//通过sdf对象将date1格式化成你描述的样子
System.out.println(sdf);
}
}
输出结果
Thu Jul 11 22:42:58 CST 2019
2019-07-11 22:42:58
四、Calendar
java.util.Calendar
1.所属的包java.util 需要导包
2.有构造方法 ,但是是用protected修饰的,通常访问不到 ,所以我们通常会调用默认的getInstance();
3.常用方法
after() before()
setTime() getTime()---->Date
getTimeInMillis()----time
getTimeZone()---TimeZone
Calendar里面包含一个date属性 可以操作date的某一个局部信息
set get
calendar.set(Calendar.YEAR,2015);
int year = calendar.get(Calendar.YEAR);
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class TestDate {
public static void main(String[] args){
Calendar calendar = Calendar.getInstance();//可以构建一个系统当前时间的calendar对象
//可以理解为calendar中包含一个date
int year = calendar.get(Calendar.YEAR);//直接操作 类.属性 获取年月日等
int month = calendar.get(Calendar.MONTH);//从0开始数 7 月 显示6
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"--"+month+"--"+day);
Date date = new Date();
System.out.println(date);//date创建时的格林威治格式的时间
System.out.println(date.getTime());//date创建时距计算机元年的时间
calendar.set(Calendar.YEAR,2015);//将年份改为2015年
System.out.println(calendar.getTime());
calendar.setTime(date);//将calendar创建的时间改为date创建的时间
System.out.println(calendar.getTime());
TimeZone tz = calendar.getTimeZone();//获取时区
System.out.println(tz.getID());//时区的
System.out.println(tz.getDisplayName());//时区的名字
}
}
输出结果:
2019--6--11
Thu Jul 11 23:15:54 CST 2019
1562858154154
Sat Jul 11 23:15:54 CST 2015
Thu Jul 11 23:15:54 CST 2019
Asia/Shanghai
中国标准时间