Calendar类的使用
System.out.println("------------Calendar无参构造------------");
// Calendar对象,不传参数,默认为当前日期
Calendar calendar = new GregorianCalendar();
// 获取当前年份
System.out.println("年份:"+calendar.get(Calendar.YEAR));
// 获取当前月份 从0开始,0代表一月,1代表二月,以此类推
System.out.println("月份:"+calendar.get(Calendar.MONTH));
// 获取当前日期 也可以使用DAY_OF_MONTH
System.out.println("日期::"+calendar.get(Calendar.DATE));
// 获取当前时 24小时进制
System.out.println("小时:"+calendar.get(Calendar.HOUR_OF_DAY));
// 获取当前分
System.out.println("分钟:"+calendar.get(Calendar.MINUTE));
// 获取当前秒
System.out.println("秒:"+calendar.get(Calendar.SECOND));
// 获取今天是这个月的第几个星期
System.out.println("这个月的第几个星期:"+calendar.get(Calendar.WEEK_OF_MONTH));
// 获取今天是星期几 1表示星期天,2表示星期一,以此类推
System.out.println("今天是星期几"+calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("------------Calendar有参构造------------");
/**
* 有参构造 分别代表年月日时分秒,写法简单明了,很符合我们人类的思维 注意月份的设置是从0开始的,这里设置的是月份是6,实际是设置了7月份
*/
calendar = new GregorianCalendar(2019, 6, 14, 16, 15, 30);
/**
* 除了在构造方法直接设置之外,也可以通过set方法设置 第一个参数表示设置的参数类型,第二个表示具体值
*/
calendar.set(Calendar.YEAR, 2000);
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DATE, 20);
// ...
System.out.println("------------Calendar和Date转换------------");
Date now = (Date) calendar.getTime();
System.out.println("now:" + now);
calendar.setTime(now);
System.out.println("calendar:" + calendar);
System.out.println("------------Calendar日期计算以及判断------------");
calendar = new GregorianCalendar();
Calendar calendar2 = new GregorianCalendar();
calendar2.set(Calendar.YEAR, 2800);
// 是否在某个时间(calendar2)之后
System.out.println("是否在某个时间(2800)之后"+calendar.after(calendar2));
// 是否在某个时间(calendar2)之前
System.out.println("是否在某个时间(2800)之前"+calendar.before(calendar2));
// 增加多少年年,月日以及时分秒同理
calendar.add(Calendar.YEAR, -10);
具体结果:
格式化日期
利用java.text.DataFormat 的子类(如SimpleDateFormat类)中的format(Date)方法可将日期格式化。
1. SimpleDateFormat 介绍
SimpleDateFormat 是一个格式化Date 以及 解析日期字符串 的工具。它的最常用途是,能够按照指定的格式来对Date进行格式化,然后我们使用可以格式化Date后得到的字符串。
更严格的说,SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
2、SimpleDateFormat 相关格式说明
字母 | 日期或时间元素 | 表示 | 示例 | |
---|---|---|---|---|
G | Era 标志符 | Text | AD | 无 |
y | 年 | Year | 1996;96 | 与大写无区别 |
M | 年中的月份 | Month | July;Jul;07 | 与小写有区别 |
W | 年中的周数 | Number | 27 | 与小写有区别 |
w | 月份中的周数 | Number | 2 | 与大写有区别 |
D | 年中的天数 | Number | 189 | 与小写有区别 |
d | 月份中的天数 | Number | 2 | 与大写有区别 |
F | 月份中的星期 | Number | 2 | 无 |
E | 星期中的天数 | Text | 2 | 无 |
a | Am/pm 标记 | Text | PM | 无 |
H | 一天中的小时数(0-23) | Number | 0 | 与小写有区别 |
k | 一天中的小时数(1-24) | Number | 24 | 与大写有区别 |
K | am/pm 中的小时数(0-11) | Number | 0 | 与小写有区别 |
h | am/pm 中的小时数(0-11) | Number | 0 | 与小写有区别 |
m | 小时中的分钟数 | Number | 30 | 与大写有区别 |
s | 分钟中的秒数 | Number | 55 | 与大写有区别 |
S | 毫秒数 | Number | 978 | 与小写有区别 |
z | 时区 | General time zone | Pacific Standard Time; PST; GMT-08:00 | 与小写有区别 |
S | 时区 | RFC 822 time zone | -0800 | 与小写有区别 |
具体代码演示:
SimpleDateFormat aDate = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
SimpleDateFormat bDate = new SimpleDateFormat("yyyy-mmmmmm-dddddd");
long now = System.currentTimeMillis();
System.out.println(aDate.format(now));
System.out.println(bDate.format(now));
SimpleDateFormat myFmt = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat myFmt1 = new SimpleDateFormat("yy/MM/dd HH:mm");
SimpleDateFormat myFmt2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 等价于now.toLocaleString()
SimpleDateFormat myFmt3 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
SimpleDateFormat myFmt4 = new SimpleDateFormat("一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
System.out.println(myFmt.format(now));
System.out.println(myFmt1.format(now));
System.out.println(myFmt2.format(now));
System.out.println(myFmt3.format(now));
System.out.println(myFmt4.format(now));
运行结果: