欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SimpleDataFormt和Calendar

程序员文章站 2022-05-16 21:26:34
...

SimpleDateFormat类

Date类的日期时间格式太丑了,可以使用SimpleDateFormat对象Date对象进行格式化和解析的操作。

它可以对Date对象进行格式化解析的操作(ps: 耐心往下看有具体解释).

常用日期格式

yyyy 	年
MM		月
dd		日
HH		时(24小时)
mm		分
ss		秒
SS		毫秒

日期格式化

所谓格式化就是把Date对象转换为想要的字符串格式(如:2018年6月19日)

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date=new Date();//当前时间对象
String str=sdf.format(date);//把当前时间的Date对象转换为字符串
System.out.println(str);//2018-6-19 18:34

日期解析

所谓解析就是把具有日期格式的字符串转换为Date对象

String str="1991年8月20日";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd");
//把上面的字符串转换为Date对象
Date date=sdf.parse(str);

//计算1991年8月20日距今有多少天
long between=new Date().getTime()-date.getTime(); //现在的毫秒值-1991年8月20日的毫秒值
//把时间间隔转换为天,并输出
System.out.println((between/1000/60/60/24)+"天");

Calendar类

Calendar表示日历类,可以很方便的对日历字段(年、月、日、时、分、秒等)可进行获取、修改,计算等操作。

Calendar是一个抽象类,不能直接创建对象,但是有一个方法可以获取对象

//获取Calendar对象,表示当前日历的时间
Calendar c=Calendar.getInstance();

在操作年,月,日等字段的时候要用一个特定的常量进行区分

Calendar常用日历字段

Calendar.YEAR	年
Calendar.MONTH	月
Calendar.DAY_OF_MONTH 月中的天(ps:0表示1)
Calendar.DAY_OF_YEAR  年中的天
Calendar.DAY_OF_WEEK  星期中某一天(ps:1代表星期日)

Calendar的修改时间

//获取Calendar对象,表示当前日历的时间
Calendar c=Calendar.getInstance();
//设置 年,2020年
c.set(Calendar.YEAR,2020);
//设置 月,3月(ps:0表示1月,1表示2月,2表示3月...这是规定别多想)
c.set(Calendar.MONTH,2);
//设置月中的天,18日
c.set(Calendar.DAY_OF_MONTH,18);

//还可以年,月,日一起设置
c.set(2020,2,18);//设置日历时间为 2020年3月18日

Calendar计算时间方法

//获取Calendar对象,表示当前日历的时间
Calendar c=Calendar.getInstance();
//设置时间2018年6月19日
c.set(2018,5,19);
c.add(Calendar.YEAR,1);//把年字段往后+1,变为2019年
c.add(Calendar.DAY_OF_MONTH,-2);//把月中的日往前-2,变为17日

Calendar的获取时间方法

//获取Calendar对象,表示当前日历的时间
Calendar c=Calendar.getInstance();
//设置时间2018年6月19日
c.set(2018,5,19);
c.add(Calendar.YEAR,1);//把年字段往后+1,变为2019年
c.add(Calendar.DAY_OF_MONTH,-2);//把月中的日往前-2,变为17日

//获取日历中“年”的字段值
int year=c.get(Calendar.YEAR);
//获取日历中“月”的字段值
int month=c.get(Calendar.MONTH)+1;
//获取日历中“月中的天”字段值
int dayOfMonth=c.get(Calendar.DAY_OF_MONTH);
//获取日历中“年中的天”字段值
int dayOfYear=c.get(Calendar.DAY_OF_YEAR);
//获取日历中“星期中的天”字段值
int index=c.get(Calendar.DAY_OF_WEEK);
//第一个元素"",是为了把"星期日"顶到后面去,让他对应1索引...
String[]  weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"}
//打印输出来看一下
System.out.println(year+"年"+month+"月"+dayOfMonth+"日 是一年中的"+dayOfYear+"天");