一 Date类
(1)Date类的概述:用来表示日期格式,精确到毫秒有两种构造方法一种是无参构造另一种是有参构造
举例:
public class Demo1 {
public static void main(String[] args) {
Date date = new Date();//无参构造
System.out.println(date);//获取当前的时间
long time=1000*60*60;//有参构造
Date date1 = new Date(time);
System.out.println(date1);
}
}
结果:
(2)Date类转化为long类型:public long getTime()
public void setTime(long time) :很少用
举例:
public class Demo2 {
public static void main(String[] args) {
Date date = new Date();
long time = date.getTime();
System.out.println(date);
System.out.println(time);//转换为long类型
long l = System.currentTimeMillis();//System类中的方法,单独使用没意义,
// 一般情况:直接测试 程序的执行速率
}
}
结果:
(3)Date---->String之间如何转换 日期格式转换为日期文本格式,这就需要用到DateFormat这个类:他是一个抽象类,不能实例化!用它的子类:SimpleDateFormat
Date转换为String String format(Date date)
String转换为Date public Date parse(String source)
SimpleDateFormat的构造方法
SimpleDateFormat(String pattern):
参数表示: pattern:当前日期使用哪一种模式:开发者规定xxxx年xx月 xx日 xx时 x分x秒
xxxx-xx-xx
年: y yyyy
月:M MM
日: d dd yyyy-MM-dd HH:mm:ss
举例:
public class Demo3 {
public static void main(String[] args) throws ParseException {
//Date---String
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy--MM--dd HH:mm:s");
String format1 = format.format(date);
System.out.println(format1);
System.out.println("-----------------");
//String--->Date
String s="2018--8--1 08:30:31";
Date parse = format.parse(s);
System.out.println(parse);
}
}
结果:
2018–08–06 15:45:13
Wed Aug 01 08:30:31 CST 2018
举例:输入你的生日算一算你来这个世界多少天了/
源代码:
public class Demo4 {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的生日");
String s = sc.next();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse(s);
long time = date.getTime();
long now = System.currentTimeMillis();
long time1=(now-time)/1000/60/24/60;
System.out.println("你来到这个世界已经"+time1+"天了");
}
}
结果:
请输入你的生日
1998-05-14
你来到这个世界已经7389天了
二:Calendar类
(1)Calendar类的概述:Calendar类是一个抽象类,所以不能直接创建一个Calendar的对象,需要调用getInstance,以获得此类型的一个通用的对象;
(2)Calendar的主要方法有以下几种:void set(int field,int value) //field时间分量,value设置分量初始值(月份从0开始)
void add(int field,int value) //field时间分量,value设置分量的增加值(在当前时间日期基础上进行增加)
Date getTime() //输出时间日期
void setTime(Date date) //将日期类型设置成日历类型
getActualMaximum(int field) //获取分量中的最大/小值
时间分量
YEAR,MONTH,DATE,HOUR,MINUTE,SECOND
DAY_OF_WEEK,DAY_OF_MONTH
(3)举例:键盘录入任意年份,算出任意年份的2月多少天?
源代码:
public class Demo5 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//键盘录入任意年份,算出任意年份的2月多少天?
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
int year=sc.nextInt();
calendar.set(year,2,1);
calendar.add(Calendar.DATE,-1);
System.out.println(year+"年有"+calendar.get(Calendar.DATE)+"天");
}
}
结果:请输入年份
2018
2018年有28天