Date和SimpleDateFormat以及Calendar类的概述

Date类(util包下的类,不能导入sql包的)

表示特定的瞬间,精确到毫秒

构造方法

public Date( )
public Date (long date)

成员方法

getTime( )
setTime(long time)

方法演示
public class DateTime {

	public static void main(String[] args) {
		
		Date d1 = new Date();    //如果没有传参数代表的是当前时间
		System.out.println(d1);
		
		System.out.println("-----------------");
		
		Date d2 = new Date(0);   //如果构造方法中参数传为0代表的是1970年1月1日
		System.out.println(d2);
		
		System.out.println("-----------------");
		
		Date d3 = new Date();
		System.out.println(d3.getTime());  //通过时间对象获取毫秒值
		System.out.println(System.currentTimeMillis());  //通过系统类的方法获取时间毫秒值
		
		System.out.println("-----------------");
		
		Date d4 = new Date();
		d4.setTime(1000);        //设置毫秒值改变时间对象
		System.out.println(d4);

	}

在这里插入图片描述

SimpleDateFormat类(实现日期和字符串的相互转换 )

是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化

构造方法

public SimpleDateFormat()
public SimpleDateFormat(String pattern)

成员方法

public final String format(Date date) 将日期对象转换为字符串
public Date parse(String source) 将时间字符串转换为日期对象

方法演示
public class SimpleDateFormatTime{

	public static void main(String[] args) throws ParseException {
	
		Date d1 = new Date(); //通过对象获取当前时间值
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //创建日期格式化类对象
		System.out.println(sdf1.format(d1));  //将日期对象转换为字符串
		
		System.out.println("-----------------");
		
		String str = "2008年08月08日 08:08:08";
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //创建日期格式化类对象
		Date d2 = sdf2.parse(str);  // 抛出异常
		System.out.println(d2);
	}

在这里插入图片描述

练习
描述:算一下你来到这个世界多少天?

public class SimpleDate {

	public static void main(String[] args) throws ParseException  {
		String s1 = "1995年04月28日";
		String s2 = "2019年07月27日";
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); //创建日期格式化类对象
		Date d1 = sdf.parse(s1);
		Date d2 = sdf.parse(s2);
		
		long Time = d2.getTime()-d1.getTime(); // 获取两个时间差的毫秒值
		System.out.println(Time / 1000 / 60 / 60 /24 );

	}
}

在这里插入图片描述

Calendar类

一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换

成员方法

public static Calendar getInstance()
public int get(int field)
public void add(int field, int amount)
public final void set(int year, int month, int date)

方法演示
public class Demo_Calender {

	public static void main(String[] args) {
		
		Calendar c = Calendar.getInstance();  //父类引用指向子类对象
				
		System.out.println(c.get(Calendar.YEAR) + "年" 
				+ getNum((c.get(Calendar.MONTH) + 1)) + "月"
				+ getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" 
				+ " " + getWeek(c.get(Calendar.DAY_OF_WEEK)));
		
		System.out.println("-------------------------");
		
		c.add(Calendar.MONTH , -1); //对指定的字段进行向前减或向后加
		c.set(Calendar.YEAR , 2000); //修改指定字段

		System.out.println(c.get(Calendar.YEAR) + "年" 
		+ getNum((c.get(Calendar.MONTH) + 1)) + "月"
		+ getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" 
		+ " " + getWeek(c.get(Calendar.DAY_OF_WEEK)));

	}

	public static String getWeek(int num) {
		String[] str = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		return str[num];
	}

	public static String getNum(int num) {
		return num > 9 ? "" + num : "0" + num;
	}
}

在这里插入图片描述

练习
描述:键盘任意录入一个年份,判断该年是闰年还是平年
分析
1.键盘录入年Scanner
2.创建Calendar c = Calendar.getInstance();
3.通过set方法设置为那一年的314.将日期向前减去1
5.判断日是多少天,如果是29天返回true否则返回false

public class Year {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		switch(1) {
		case 1:
			System.out.println("请输入一个年份,判断该年是闰年还是平年");
			int year = sc.nextInt();   //录入数字年份
			show(year);
		case 2:
			System.out.println("请输入一个年份,判断该年是闰年还是平年");
			int year2 = sc.nextInt();  //录入数字年份
			show(year2);
			break;
		}
	}

	private static void show(int year) {
		Calendar c = Calendar.getInstance();
		c.set(year, 2, 1);
		c.add(Calendar.DAY_OF_MONTH, -1);
		if(c.get(Calendar.DAY_OF_MONTH) == 28) {
			System.out.println("你输入的年份是平年");
		}else {
			System.out.println("你输入的年份是闰年");
		}
		
	}

}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值