-
long - 毫秒值 System.currentTimeMillis();
计数使用 - 效率问题,秒表
简单时间计算,例如明天,昨天… -
Date - new Date()
不能计算
判断时间先后 after before
打印时间:年月日/时分秒 -
Calendar - 日历(万年历) - 抽象类
get -> 获得时间字段 set -> 设置时间字段 add -> 计算时间字段
-
三种时间格式,功能互相没有冲突的
long:适合做简单计算,7天之内的计算、计时
Date:适合做时间格式输出,配合DateFormat
Calendar:适合做时间计算、推算、获得时间分字段 -
DateFormat:是日期/时间格式化子类的抽象类
SimpleDateFormatDate parse(String); String format(Date)
@Test
public void test01() {
//long表示毫秒值
long time =System.currentTimeMillis();//获得当前时间对应毫秒值(实时变化)
System.out.println(time);
System.out.println(Long.MAX_VALUE);
//292471208
System.out.println(Long.MAX_VALUE/1000/60/60/24/365);
//long=0表示什么时间
//计算机元年 1970年1月1日
}
@Test
public void test02() {
Date date= new Date(); //new Date对象 ->当前系统时间
System.out.println(date); //显示当前系统时间对应年月日
// int型防止越界:加L
long time=1560479024379L +24L*60*60*1000*30; //计算30天后的时间
//通过long类型获得Date类型时间
date =new Date(time);
System.out.println(date);
//int 类型最大为21亿,超过取值范围则溢出越界
//运算符在计算时会把参与运算的数据统一类型
System.out.println(24*60*60*1000*30);
}
@Test
public void test03() {
Date date=new Date();//当前
Date date1=new Date(1560479024379L);
//常用API
boolean b=date.after(date1); //问date是否在date1之后-true
System.out.println(b);
b=date.before(date1); //问date是否在date1之前-false
System.out.println(b);
//date ->long 获得时间对应的毫秒值
long time =date.getTime();
System.out.println(time);
//获得当全前时间对应年日月时分秒
System.out.println(date);
//获得date1对应的年月日时分秒
System.out.println(date1);
//setTime
date.setTime(time);
}
//格林威治时间
@Test
public void test04() {
Date date=new Date(0);
System.out.println(date);
}
@Test //Date->Calendar
public void test05() {
Calendar cal =Calendar.getInstance();
System.out.println(cal);
Date date=cal.getTime();
System.out.println(date);
}
@Test
public void test06() {
Calendar cal=Calendar.getInstance();
Date date=cal.getTime();
System.out.println(date);
//获得当前cal日历所对应的星期几
int week=cal.get(Calendar.DAY_OF_WEEK);
System.out.println(week);
int month=cal.get(Calendar.MONTH);
System.out.println(month==Calendar.MAY);
}
@Test
public void test07() {
Calendar cal=Calendar.getInstance();
//日期转到1994年3月1日
cal.set(Calendar.YEAR,1994);
cal.set(Calendar.MONTH,Calendar.MARCH);
cal.set(Calendar.DATE,1);
int week=cal.get(Calendar.DAY_OF_WEEK);
System.out.println(week);
}
//生产日期2019年3月20日 保质期45天 商品到期的前10天,当周的周三是促销日
@Test
public void test08() {
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR,2019);
cal.set(Calendar.MONTH,Calendar.MARCH);
cal.set(Calendar.DATE,20);
System.out.println("该产品的生产日期为:"+cal.getTime());
cal.add(Calendar.DATE,45);
System.out.println("该产品保质期至:"+cal.getTime());
//过35天是什么时候
cal.add(Calendar.DATE,-10);
System.out.println("到期前10天的日期是:"+cal.getTime());
//这一天是星期几
cal.get(Calendar.DAY_OF_WEEK);
System.out.println("这天是:"+cal.getTime());
//这周的周三
int week=cal.get(Calendar.DAY_OF_WEEK);
System.out.println(week);
cal.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY);
System.out.println("这天搞活动:"+cal.getTime());
}
@Test
public void test09() {
//获得当前时间毫秒
long time1=System.currentTimeMillis();
//long转换成Date年月日时分秒
Date date1=new Date();
date1.setTime(time1);
System.out.println("当前DATE为:"+date1);
//long转换成Calendar类型
Calendar cal1=Calendar.getInstance();
cal1.setTimeInMillis(time1);
System.out.println("当前Calendar为:"+cal1.getTime());
//获得当前时间年月日时分秒
Date date2=new Date();
//转化成long
long time2=date2.getTime();
}
@Test
public void test10() throws ParseException {
DateFormat df= new SimpleDateFormat("yyyy-mm-dd HH:ss EE");
Date date=new Date();
//Date->文本String
String str=df.format(date);
System.out.println(str);
//String->Date
df=new SimpleDateFormat("yyyy/MM/dd");
String s="2019/06/14";
Date d1=df.parse(s);
System.out.println(d1);
}