时间类Date与日历类Calender
1、Date类:时间对象,包含时间所具备的所有内容
a.可以通过无参构造方法创建的时间是当前系统时间(new Date();)
b.通过有参构造方法创建的时间是参数对象的时间(new Date(long mis);)
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Date
*/
public class Test03 {
public static void main(String[] args) {
//创建时间对象,得到系统时间(cts时间 美国中央时间)
Date date=new Date();
System.out.println(date.toString());
/**
* 2021-06-08 15:59:29 16:03 2021/6/8 星期几
* yyyy(YYYY):四位数的年 HH:mm yyyy/M/d E
* MM:两位月份 MMM:中文月份 一月
* dd(DD):两位日
* HH: 两位24制小时 hh:两位12制小时
* mm:两位分钟
* ss:两位秒
* SSS:毫秒
* E 星期
*/
//时间格式化对象
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String str=sdf.format(date);
System.out.println("格式化后:"+str);
// Unparseable date(无法转换日期格式异常),只能使用“-”,否则都会出现格式异常
String birthday="1999-02-31";
//字符串转为时间对象
Date d=null;
try {
d=sdf.parse(birthday);
System.out.println(d);
}catch (Exception e){
e.printStackTrace();
}
//格林威治时间 1970-01-01 00:00:00
//获取毫秒数
long l1= date.getTime();//时间毫秒数
long l2=System.currentTimeMillis();//系统时间毫秒数
date=new Date(l1);
System.out.println(l1);
System.out.println(l2);
long l3=d.getTime();
long l4=Math.abs(l3-l1);//时间差
long mis=24*60*60*1000;//一天的毫秒数
long days=l4/mis;
System.out.println("时间跨度为"+days+"天");
}
}
2、Calender类
Calender是一个单例的时间对象,存储的是每一个整形类型的时间单位,可以更加方便计算每一天
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* java时间Calender
*/
public class Test01 {
public static void main(String[] args) {
method01();
}
public static void method01(){
//创建日历对象
Calendar c=Calendar.getInstance();
System.out.println(c);
int year=c.get(Calendar.YEAR);
int M=c.get(Calendar.MONTH)+1;//月份的下标加1
int D=c.get(Calendar.DAY_OF_MONTH);
int h=c.get(Calendar.HOUR_OF_DAY);
int min=c.get(Calendar.MINUTE);
int sec=c.get(Calendar.SECOND);
int w=c.get(Calendar.DAY_OF_WEEK)-1;//由星期日开始计算
String str=String.format("%s年%s月%s日 %s:%s:%s 星期%s",year,M,D,h,min,sec,w);
System.out.println(str);
int dy=c.get(Calendar.DAY_OF_YEAR);
int wy=c.get(Calendar.WEEK_OF_YEAR);
long ms=c.getTimeInMillis();//获取毫秒数
//Calender to Date
Date date1=new Date(ms);
Date date2=c.getTime();
//Date to Calender
c.setTime(date1);
//时间的相加相减
Calendar c1=Calendar.getInstance();
c1.set(Calendar.YEAR,1999);
c1.set(1999,11,12);
//特别注意
c1.set(Calendar.MONTH,-1);//年减一
c1.set(Calendar.DAY_OF_MONTH,-1);//1为1号,0为上个月最后一天,-1为上个月的倒数第二天
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
System.out.println("设置的时间:"+sdf.format(c1.getTime()));
//时间的加减
Calendar c2=Calendar.getInstance();
c2.add(Calendar.MONTH,1);//正数是加上,负数为减去,0为原来
System.out.println("加减后的时间:"+sdf.format(c2.getTime()));
}
}