常用类————(3)Date、DateFormat、SimpleDateFormat、Calendar类

Date类

 该类对象用于表示一个特定的瞬间,根据构造方法同,表示不同的瞬间。

构造方法

(在API中搜索时我们会发现有两个Date类,其中有一个是关于数据库sql的,这里学习的是util包里的。)

代码实例:

import java.util.Date;
public class Demo1 {
	public static void main(String[] args) {
		Date d = new Date();
		System.out.println(d);
		
		Date d1 = new Date(313132);
		System.out.println(d1);
	}
}

结果输出:

Mon Nov 11 21:53:13 CST 2019
Thu Jan 01 08:05:13 CST 1970

我们可以看出来,第一种就是返回当前时间。第二种构造方法里面是距离1970年的毫秒值。


成员方法

import java.util.Date;

public class Demo1 {
	public static void main(String[] args) {
//		构造方法
		System.out.println("构造方法");
		Date d1 = new Date();
		System.out.println(d1);
		
		Date d2 = new Date(3423432223334L);
		System.out.println(d2);
		
		Date d3 = d1;
		Date d4 = new Date();
//		after方法和before方法,检测调用者时间是否在参数时间之前或者之后
		System.out.println("\nafter方法和before方法,检测调用者时间是否在参数时间之前或者之后:");
		System.out.println(d1.after(d2));
		System.out.println(d1.before(d2));
		
//		compareTo方法,对比两个时间,如果调用者早则返回-1,调用者晚则返回1,相等返回0
		System.out.println("\ncompareTo方法,对比两个时间,如果调用者早则返回-1,调用者晚则返回1,相等返回0");
		System.out.println(d1.compareTo(d3));
		System.out.println(d1.compareTo(d2));
		
//		getTime方法,获取从1970年1月1日0点到调用者时间的毫秒数
		System.out.println("\ngetTime方法,获取从1970年1月1日0点到调用者时间的毫秒数");
		System.out.println(d1.getTime());
		System.out.println(d4.getTime());
		
//		setTime方法,设置对象为从1970年1月1日的毫秒数。
		System.out.println("\nsetTime方法,设置对象为从1970年1月1日的毫秒数。");
		d1.setTime(2343242343434L);
		System.out.println(d1);
		
	}
}

输出结果:

构造方法
Wed Nov 13 19:02:48 CST 2019
Sun Jun 26 09:23:43 CST 2078

after方法和before方法,检测调用者时间是否在参数时间之前或者之后:
false
true

compareTo方法,对比两个时间,如果调用者早则返回-1,调用者晚则返回1,相等返回0
0
-1

getTime方法,获取从1970年1月1日0点到调用者时间的毫秒数
1573642968748
1573642968771

setTime方法,设置对象为从1970年1月1日的毫秒数。
Sun Apr 03 04:39:03 CST 2044

DateFormat

(1)作用

  • 对时间日期进行格式化处理。
  • 把Date对象转化为年月日时分秒格式字符串。
  • 把字符串转化为Date对象。

DateFormat 在java.text包下,抽象类,不能创建对象,需要创建子类对象,有一个已知的子类,SimpleDateFormat

 重要构造方法:

重要方法:

格式表:

(红色为常用)

代码示例:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class simle {
	public static void main(String[] args) throws ParseException {
		//Date类对象的默认输出格式
		System.out.println(new Date());
		
		//第一种构造方法
		SimpleDateFormat sdf = new SimpleDateFormat();
		//format方法,将一个Date类对象解析为字符串
		String str = sdf.format(new Date());
		//可以发现,解析出来的字符串表示的日期相比Date类表示的日期更加直观。
		System.out.println(str);
		//第二种有参构造方法,设置日期格式。
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//然后再解析一次日期字符串
		String str1 = sdf1.format(new Date());
		//这次的效果就是我们想要的效果了
		System.out.println(str1);
		//再次设置日期格式
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH--mm--ss");
		//parse方法,为Date类创建的对象用设置好的格式赋值
		Date d1 = sdf2.parse("2016-07-23 23--04--09");
		System.out.println(d1.getTime());
		//toPattern方法,输出当前对象的日期格式
		System.out.println(sdf2.toPattern());
	}
}

输出结果:

Wed Nov 13 20:33:05 CST 2019
19-11-13 下午8:33
2019-11-13 20:33:05
1469286249000
yyyy-MM-dd HH--mm--ss

练习:输入你的生日,计算出你从出生到现在一共多少天。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class 生日计算 {
	public static void main(String[] args) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你的生日:");
		String s = sc.next();
		Date d1 = sdf.parse(s);
		Long l1 = d1.getTime();
		Long l2 = new Date().getTime();
		System.out.println("你活了"+(l2-l1)/1000/60/60/24+"天");
		sc.close();
	}
}
请输入你的生日:
2016年7月23日
你活了1208天

Calendar类

(1)作用

由于Date类在设计上的一些缺陷,所以Java提供了Calendar类来更好的处理时间和日期。

Calendar是一个抽象类,表示日历,不能直接实例化,通常使用getInstance() 方法来获取实例。

 

(2)用法

创建方式

Calendar calendar=Calendar.getInstance()

 

Calendar类的常用方法:

getTime()            返回Date类型时间

setTime(Date date)  设置时间到日历中

get(Calendar.YEAR/MONTH/DATE) 获取年份、月份、日

set(2015,11,11,12,11,10) 设置时间到日历中,月份从0到11

add(Calendar.YEAR/MONTH/DATE,2) 在一个日期的年,月,日上添加对应的值

 代码示例:

import java.util.Calendar;
import java.util.Date;

public class Demo01 {
	public static void main(String[] args) {
			//抽象类
		    Calendar cal = Calendar.getInstance();  // 系统当前时间
		 
		    System.err.println("getTime()方法");
			Date date = cal.getTime();
			System.out.println(date);

			System.err.println("get()方法");
		    int year = cal.get(Calendar.YEAR);   
		    int month = cal.get(Calendar.MONTH); // 月份从0开始
		    int datee = cal.get(Calendar.DATE);
		    int hour = cal.get(Calendar.HOUR);
		    int minute = cal.get(Calendar.MINUTE);
		    int second = cal.get(Calendar.SECOND);
		    int day = cal.get(Calendar.DAY_OF_WEEK);  //获得的是这个星期的第几天  星期日是第一天
		    System.out.println(year+"-"+(month+1)+"-"+datee+" "+hour+":"+minute+":"+second+" 星期"+(day-1));
		   

		    System.err.println("set方法");
		    cal.set(2017,10,20,11,11,11);
		    System.out.println(cal.getTime());
		    
		    
		    System.err.println("add方法");
		    cal.add(Calendar.DATE,25);
		    System.out.println(cal.getTime());
		    
		    cal.add(Calendar.MONTH, 13);
		    System.out.println(cal.getTime());
		    
		}
	}

输出结果:

getTime()方法
Wed Nov 13 21:07:04 CST 2019
2019-11-13 9:7:4 星期3
get()方法
set方法
Mon Nov 20 11:11:11 CST 2017
add方法
Fri Dec 15 11:11:11 CST 2017
Tue Jan 15 11:11:11 CST 2019

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值