本节课我学习的主要内容有:
1.Date类
2.Calendar类
3.日期与时间的格式化方法SimpleDateFormat类
Date类:
来自java.util包,它的对象代表的是即时时间。
体现的是从1970年01月01日00时00分00秒00毫秒距离当前时间的毫秒数。
Date不支持国际化的、并且很多方法已经过时、不推荐使用。
new Date()即可创建一个表示当前时间的Date对象。
getTime()得到1970年。。。到现在这个时刻的时间有多少毫秒的长整数。
setTime()
after()
before()
现如今Date中很多方法已经没有什么用了,如今时间的处理并不直接在Date类中进行,
而是通过Calendar或者LocalDate、LocalTime来进行,在日常使用中更多的
是要做一个记录日期的实例。
Calendar类:
该类是抽象类,来自于util包。
GregorianCalendar是Calendar的子类;可以自己设置自己的时区和国际化格式;定义了
足够的方法,让我们能够表述日历的规则,Date用于记录一个含日期的、精确到毫秒的时间,重点
代表一刹那的时间本身。
Calendar用于将某一日期放到历法中去,时间和年月日星期上午下午夏令时等这些历法规定相互
作用关系和互动,Calendar本身代表公历的一个简化缩水版,姑且叫“计算机历”。
javaSE中以GregorianCalendar类来提供完整的公里相关的历法功能。
获取实例对象:Calendar NAME = Calendar.getInstance();
get()方法:根据参数获取时间的信息,如获取指定时间属性:c.get(Calendar.YEAR);
Calendar实例所表示的时间NAME.set(2020.11.6);
add()方法与roll方法的使用区别。
日期与时间的格式化方法SimpleDateFormat类:
是抽象类DateFormat类的子类。
可以自定义日期格式。
它是一个与语言环境相关的方式来格式化和分析日期的具体类。
SimpleDateFormat使得可以选择任何用户定义的日期-时间格式。
SimpleDate类的使用:
获取SimpleDateFormat实例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MMMM-dd HH:mm:ss");
将日期格式化成指定字符串:sdf.format(new Date());
将格式化的字符串转换成日期对象:sdf.parse("xxxx-xx-xx");
y 年
M 年中的月份
d 月份中的天数
E 星期中的天数
a Am/pm标记
H 一天中的小时数(0-23)
h am/pm中的小时数(1-12)
m 小时中的分钟数
s 分钟中的秒数
S 毫秒数
方法:
format()实现格式化。
TestDateAndCalendar类(测试所学内容的类)
package LessonForDateAndCalender;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class TestDateAndCalendar
{
public static void main(String[] args)
{
System.out.println("Date测试-----------------------------------");
Date d1 = new Date();
System.out.println("从1970年01月01日00时00分00秒00毫秒距离当前时间的毫秒数:"+d1.getTime());
System.out.println("当前时间:"+d1.toString());
//以下好多种方法都不推荐使用了
System.out.println("本月的日期:"+d1.getDate());
System.out.println("本日是星期几:"+d1.getDay());
Date d2 = new Date(2020,11,6);
Date d3 = new Date(2020,10,6);
System.out.println("d2时间是否在d3之后:"+d2.after(d3));
System.out.println("d3时间是否在d2之后:"+d3.before(d2));
System.out.println("格式化Date测试-----------------------------------");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd E a hh:mm:ss");
System.out.println(sdf1.format(d1));//输出2020-11-06 星期五 下午 10:08:57
//通过一个给定的字符串来转换为一个日期对象
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
try
{
Date d4 = sdf2.parse("2020-11-06");//这里转换的字符串日期格式要和你sdf2中的一样。
System.out.println("d4这天是星期:"+d4.getDay());
} catch (ParseException e)
{
e.printStackTrace();
}
System.out.println("Calendar测试-----------------------------------");
Calendar c1 = Calendar.getInstance();//默认得到当前的时间点
System.out.println("当前年:"+c1.get(Calendar.YEAR));
System.out.println("当前月:"+(c1.get(Calendar.MONTH)+1));//Calendar中月份是从0开始算的
System.out.println("当前日:"+c1.get(Calendar.DATE));
Calendar c2 = Calendar.getInstance();//默认得到当前的时间点
//set()
c2.set(2020, 7, 9, 10, 56);
System.out.println("当前年:"+c2.get(Calendar.YEAR));
System.out.println("当前月:"+c2.get(Calendar.MONTH));//Calendar中月份是从0开始算的
System.out.println("当前日:"+c2.get(Calendar.DATE));
//add()会自动进位
c2.add(Calendar.DATE, 5);//增加日期
System.out.println("增加5天后的当前日:"+c2.get(Calendar.DATE));
//roll()不会自动进位
c2.roll(Calendar.MONTH, 1);
System.out.println("增加1个月后当前月:"+(c2.get(Calendar.MONTH)));
c2.roll(Calendar.MONTH, true);//true会自动增 false会自动减
System.out.println("增加1个月后当前月:"+(c2.get(Calendar.MONTH)));
}
}
本篇部分文字来源于:
咕嘟咖啡杨海滨老师 — 《java编程语言高级特性》
在这里十分感谢老师能够给我带来学习的激情。
2020.11.6
本文章是本人学习笔记,不进行任何商用所以不支持转载请理解!也请别拿去商用!
如果觉得对你有帮助那么欢迎你随时来回顾!
只为记录本人学习历程。
毕