Date对象,日期格式化(SimpleDateFormat),字符串转日期,Calendar日历

Date日期对象

日期也是个对象,日期对象也是由类产生的java.util.date

Date类构造方法
方法名方法解释
Date()返回当前系统的日期和时间
Date(long time) 传递毫秒值日期和时间定位到指定的毫秒值
pub1ic static void main(String[] args) {
	Date d = new Date();
	system. out. print1n(d); // Fri Ju1 17 16:18:45 CST 2020
	Date d2 = new Date(0);
	System. out. print1n(d2);
}
Date类的其他方法
返回值方法名方法解释
voidsetTime(long time)日期和时间定位到指定的毫秒值
longgetTime()返回当前日期时间对应的毫秒值
public static void main(String[] args) {
	Date d = new Date( );
	//调用方法setTime()设置亳秒值
	d. setTime(0);
	System. out . println(d);
	//调用getTime()方法获取毫秒值
	long time = d.getTime();
	System. out . println(time);
}
学习Date对象最终目的

我们必须会做一个事情:日期对象和毫秒值之间的互换
时间和日期不能数学计算,但是毫秒值可以(整数,可以数学计算)

  • 日期对象转成毫秒值
    。new Date().getTime()
    。System.currentTimeMillis()
  • 毫秒值转成日期对象
    。new Date(毫秒值)
    。new Date().setTime(毫秒值)

SimpleDateFormat

对日期和时间进行格式化:格式可以我们自己定义
java.text.SimpleDateFormate类实现格式化
java.text.DateFormat是SimpleDateFormat的父类

实现日期的格式化

1,创建子类SimpleDateFormat的对象
。在构造方法中,传递我们自定义的日期格式
2,对象调用方法format(Date d)返回字符串

//实现日期的格式化:显示成2020年7月17日16点43分10秒
public static void main(String[] args) {
	//创建子类SimpleDateFormat的对象
	//构造方法,传递我的格式,看API文档
	SimpleDateFormat sdf =
	new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");
	//调用sdf的方法String format(Date d)方法是继承父类的
	String str = sdf. format(new Date( )) ;
	System. out . println(str) ;//2020年7月17日 16点49分57秒	
}

在这里插入图片描述

字符串转成日期对象

用户输入的日期,键盘,还是日历选择数据类型都是字符串
使用SimpleDateFormat的方法parse

  • Date parse(String s)
public static void main(String[] args) throws ParseException {
	//字符串转成日期对象
	String s = "2020-5-1";
	/*
	*创建格式化对象
	*构造方法中,传递日期格式
	*注意:日期格式,和字符串一致
	*/
	SimpleDateFormat sdf = new SimpleDateFormat( "yyy-MM-dd");
	//sdf对象调用方法parse(字符串)返回日期
	Date d = sdf.parse(s);
	System. out . println(d);
}
日期练习

要求:计算你活了多少天
出生日期,今天日期,两个日期的差值,就是活了多少天
数学计算,日期不能计算,依靠毫秒值
出生日期用户输入
实现步骤:

  • 键盘输入,他的出生日期(String)
  • 出生日期字符串转换为日期对象Date
  • 今天的日期转为毫秒值
  • 出生日期转为毫秒值
pub1ic static void main(String[] args) {
	Scanner sc = new Scanner(System. in);
	System. out . print1n("请输入你的生日格式: 2000-01-01");
	//键盘输入,他的出生日期(String)
	String birthdayString = sc. nextLine();
	//获取今日的日期对应亳秒值
	long todayMillis = new Date() . getTime();
	//生日日期转成亳秒值
	//先将字符串格式,转成日期Date
	SimpleDateFormat sdf = new SimpleDateFormat( "yyy-MM-dd");
	Date birthdayDate = sdf . parse(birthdayString) ;
	long birthdayMillis = birthdayDate. getTime( );
	//计算结果是毫秒值(转成对应的天数)
	System . out . println ((todayMillis - birthdayMillis)/1000/60/60/24) ;
}
Calendar日历

Date对象的代替者,java.util.Calendar 日历对象
Calendar是抽象类,不能建立对象,找它的子类GregorianCalendar 格林威治日历
但是:创建日历对象,比我们想象的要复杂,国家、地区、语言、时区
Sun公司很善良,他们做完了
Calendar类静态方法static Calendar.getInstance()返回子类对象
静态方法的里面 return new GregorianCalendar ()

pub1ic static void main(String[] args) {
	//日历类的静态方法,获取子类对象
	Calendar cal = Calendar .getInstance(); // return new GregorianCalendar ( ) ;
	System.out.println(cal);
}
日历字段

组成一个日历,需要最基本的数据,年,月,日、小时、分钟…
组成部分成为日历字段,日历字段的数据类型是int类型

Calendar类的方法

方法:是calendar类中定义的方法,如果方法是抽象的,执行子类方法重写
方法不是抽象的,子类继承直接来使用

方法返回值方法名字方法解释
static CalendargetInstance()静态方法,返回子类的对象
intget(int)返回指定的日历字段数据
voidset(int,int,int)设置日历,传递年,月,日
voidset(int,int)设置日历,设置指定的某个日历字段
voidadd(int,int)日历字段的偏移量
pub1ic static void main(String[] args) {
	Calendar cal = Calendar . getInstance();
	/*
	*get方法获取日历字段
	*年,月,日,小时,分钟...
	*
	*/
	int i = cal.get(Calendar.YEAR);
	System. out . println(i+"年");//2020年
}
public static void main(String[] args) {
	Calendar cal = Calendar . getInstance();
	//设置日历,设置到今年的10月份
	//参数1:设置哪个字段,参数2:具体数据
	cal. set(Calendar . MONTH, 9);
	//打印输出日历
	System. out . println( cal. get(Calendar. YEAR)+"年" + (cal. get(Calendar .MONTH) + 1) + "月");
}
public static void main(String[ ] args) {
	Calendar cal = calendar . getInstance();
	//当前日历,向后偏移180天
	//参数1:要偏移的字段,参数2:具体数据
	cal. add( Calendar.DAY_ OF_MONTH, 180);
	//打印输出日历
	System. out . println( cal. get(Calendar. YEAR)+"年" + (cal. get(Calendar .MONTH) + 1) + "月"+cal. get(Calendar .DAY_ OF_ MONTH) + "日");
}
日历练习

需求:计算闰年
提供年份,计算出是不是闰年
实现思想:闰年的2月是29天,日历设置到这年的3月1日,向前偏移一天

pub1ic static void main(String[] args) {
	Calendar cal = Calendar . getInstance();
	//设置日历3月1日
	cal.set(2020, 2, 1);
	//向前偏移1天
	cal. add(Calendar . DAY_ OF_ MONTH, -1);
	//取出天数
	int i = cal. get(Calendar . DAY_ OF_ MONTH);
	System . out. println(i);//29
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值