【知晓的丧day拯救计划】java基础学习笔记补充 时间相关类

时间处理相关类

计算机世界,把1970年1月1日00:00:00定位基准时间,以毫秒为单位进行度量,1970年之后用正数表示,1970年之前用负数表示,用long类型的值来表示。

可以用下面的代码获取当前操作系统时间的毫秒数

long now = System.currentTimeMillis();

这个毫秒数是所有时间类的核心值,年月日都是按照这个数值计算出来的。

java.util.Date

常用构造方法:
Date():分配一个Data对象,并初始化次对象为系统当前的日期和时间
Date(long date):分配一个Date对象并初始化此对象,表示date毫秒数对应的日期和时间

Date d1 = new Date();  //没有传参默认当前时刻
System.out.println(d1);		
Date d2 = new Date(1000L*3600*24*365*50); //传入毫秒数,返回对应日期的信息
System.out.println(d2);

/*
* Wed Mar 18 14:25:11 CST 2020
* Fri Dec 20 08:00:00 CST 2019
* /
		

常用方法
long getTime()

方法作用
long getTime()返回自1970年1月1日00:00:00到Date对象表示时间的毫秒数
boolean after(Date when)测试此日期是否在指定日期之后
boolean before(Date when)测试此日期是否在指定日期之前
boolean equals(Object obj)比较两个日期是否相等
String toString()把Date对象转换为String(格式:dow mon dd hh:mm:ss zzz yyyy)
System.out.println(d1.getTime());   //1584514467267
System.out.println(d1.after(d2));   //true
System.out.println(d1.before(d2));  //false	
System.out.println(d1.equals(d2));  //false		
System.out.println(d1.toString());  //Wed Mar 18 14:54:27 CST 2020		
	}

DateFormat时间格式化类

DateFormat类的作用就是实现时间对象指定格式字符串之间的转化。
DateFormat类是抽象类,一般使用它的子类SimpleDateFormat类来实现上述功能。

  • 将Date对象转成字符串
Date d1 = new Date();
		
//规定字符串的格式
SimpleDateFormat s1 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
SimpleDateFormat s2 = new SimpleDateFormat("时间:hh-mm-ss 日期:MM月dd日 yyyy年");
//按照设定好的格式将Date对象转换成字符串
String daytime = s1.format(d1);
System.out.println(daytime);       //2020/03/18 03:08:14
System.out.println(s2.format(d1)); //时间:03-21-20 日期:03月18日 2020年

需要注意的是:
①创建SimpleDateFormat类对象时需要指定好字符串格式。
②格式化字符含义是固定的,不可以改动。

字母日期或时间元素字母日期或时间元素
GEra标志符H一天中的小时数(0-23)
yk一天中的小时数(1-24)
M年中的月份Kam/pm中的小时数(0-11)
w年中的周数ham/pm中的小时数(1-12)
W月份中的周数m小时中的分钟数
D年中的天数s分钟中的秒数
d月份中的天数S毫秒数
F月份中的星期z时区(General time zone)
E星期中的天数Z时区(RFC 822 time zone)
aam/pm标记

③连接上面这些内容的字符或这顺序是可以改变的,可以按照需求组合输出格式。

  • 将字符串转成Date对象
SimpleDateFormat s1 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
SimpleDateFormat s2 = new SimpleDateFormat("时间:hh-mm-ss 日期:MM月dd日 yyyy年");
//将符合格式的字符串转换成Date对象
//String time = ;
Date d2 = s1.parse("1988/4/16 5:20:00");
System.out.println(d2);            //Sat Apr 16 05:20:00 CDT 1988
Date d3 = s2.parse("时间:05-20-20 日期:04月16日 1988年");
System.out.println(d3);            //Sat Apr 16 05:20:00 CDT 1988

需要注意的是:
①字符串一定要严格按照规定好的格式,否则会报异常java.text.ParseException: Unparseable date
②字符串转换Date对象时需要抛出异常

Calendar日历类

Calendar类是一个抽象类,提供了日期计算相关功能。
GregorianCalendar类是Calendar类的一个子类,提供了世界上大多数国家/地区使用的标准日历系统。

  • 获取日期相关信息get()
//当前时间2020-3-18,星期三
GregorianCalendar calendar = new GregorianCalendar();

int year = calendar.get(Calendar.YEAR);         //2020
int month = calendar.get(Calendar.MONTH);       //2
//注意:月份用0-11表示,这里的2实际是三月
int day = calendar.get(Calendar.DAY_OF_MONTH);  //18
int day2 = calendar.get(Calendar.DATE);         //18
//注意:Calendar.DAY_OF_MONTH与Calendar.DATE含义相同
int date = calendar.get(Calendar.DAY_OF_WEEK);  //4
//注意:星期用1-7表示,1代表sunday,2代表monday,以此类推

注:
①GregorianCalendar的常用构造:
GregorianCalendar(),无参构造,系统当前时间
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay)
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, )
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)
②月份用0-11表示,星期用1-7表示且1为星期日,避免出错也可以直接用常量Calendar.JANUARY、Calendar.MONDAY等来表示。

  • 设置日期相关信息set()
GregorianCalendar calendar1 = new GregorianCalendar();
calendar1.set(Calendar.YEAR, 1988);
calendar1.set(Calendar.MONTH,4);
calendar1.set(Calendar.DAY_OF_MONTH, 16);
System.out.println(calendar1.toString());
  • 日期推算add()
//日期计算
GregorianCalendar calendar2 = new GregorianCalendar();
calendar2.add(Calendar.MONTH, -7); //月份减7
calendar2.add(Calendar.DATE, 7);  //天数加7
  • 日历对象和时间对象转化
//日历对象和时间对象转化
GregorianCalendar calendar3 = new GregorianCalendar();
Date d = calendar3.getTime();
calendar3.setTime(d);
System.out.println(d);		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值