Date,SimpleDateFormat与Calendar的简单使用

Date

Date 主要的作用是对某个特定的时间点的操作,java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。 使用java.util.Date包

创建对象:
Date date = new Date(); 当前时间对象
Date date = new Date(时间对象) ; 具体某个时间点的对象

主要方法:
getTime(); 将指定的时间转为时间戳
setTime() ; 将指定的时间戳转为时间
before(); 判断当前时间是否早于指定时间
after() ; 判断当前时间是否晚于指定时间

public class DateDemo {
	public static void main(String[] args) {
		Date date = new Date(); // 无参构造
		System.out.println(date); // 打印出的结果: Tue Mar 23 13:31:01 CST 2021

		// ======================打印明天同一时刻的对象	======================	
		long tomorrow = System.currentTimeMillis() +24*60*60*1000;
		Date after = new Date(tomorrow); // 有参构造, 指定具体某个时间点的对象
		System.out.println(after); //Tue Mar 23 15:31:56 CST 2021
		
		long d1 = after.getTime(); //将指定的时间转为时间戳
		System.out.println(d1); // 1616398316076
		
		after.setTime(d1);  //将指定的时间戳转为时间
		System.out.println(after); //Tue Mar 23 15:36:00 CST 2021
		
		boolean result = date.after(after); // 判断当前时间是否晚于指定时间
		System.out.println(result); //false
		
		boolean result1 = date.before(after);  //判断当前时间是否早于指定时间
		System.out.println(result1); //true
		
	}

}


## SimpleDateFormat

前面说过Date , 但是Date打印出来的不是很美观, 例如: Tue Mar 23 15:36:00 CST 2021。
SimpleDateFormat的作用:
	 把一个Date对象可以转成我们希望的一个结果样式(字符串);
	 也可以把一个字符串解析为一个Date对象。
	 
格式化的模板
```java
年:yyyy
月:MM
日:dd
时:HH
分:mm
秒:ss
毫秒:SS

创建对象:
SimpleDateFormat sdf = new SimpleDateFormat(“模板样式”);
样式例如: yyyy-MM-dd HH:mm:ss

主要方法:
format(); 将date对象格式化为对应的模板的样式
parse(); 将格式化的模板对象, 解析为date对象, 注意解析时的模板必须与创建对象时的模板一致;
例如: 创建对象时模板格式: yyyy-MM-dd HH:mm:ss
解析时的模板格式也必须为: yyyy-MM-dd HH:mm:ss

public class SimpleDateFormatDemo {

	public static void main(String[] args) throws ParseException {
		Date date = new Date(); // 创建date对象
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 创建指定的模板格式对象,  yyyy-MM-dd HH:mm:ss
//		============ 格式化=============
		String time = sdf.format(date); // 使用format方法格式化date
		System.out.println(time);
		
//		============  解析 =============
		Date date1 = sdf.parse("2021-03-22 20:41:47"); // 使用parse方法解析模板, 得到date对象
		System.out.println(date1);
		
//		============模板============
		sdf.applyPattern("yyyy年MM月dd日 HH时mm分ss秒"); // 如果想要修改模板的格式, 使用applyPattern方法即可
		System.out.println(sdf.format(date));
		System.out.println(sdf.parse("2021年03月22日 20时45分53秒"));
	}

}

Calendar

Calendar 抽象类, 主要是对日历中的一些方法使用, 日期的计算 , 判断时间的。

创建对象:
虽然是抽象类, 但是他有一个 getInstance()静态方法, 可以创建对象, 其实内部创建的是一个Calendar的子类对象。
Calendar cal = Calendar.getInstance();

常用属性:

YEAR  年
MONTH   月,注意月份是从0开始的, 0-11
DAY_OF_MONTH  日
DAY_OF_WEEK  这周的第几天, 也是从星期日开始的
DAY_OF_YEAR  今年的第几天
HOUR   时
MINUTE   分
SECOND   秒

常用方法:
int get(int field) 通过指定的字段获得对应的值 -> 获得当前的年月日…
set(int field,int value) 给指定的字段设置值,注意把新值覆盖之前的这个字段值,会自动的进位
add(int field,int amount) 这个方法和set差不多,但是把amount的值累加到当前设置的字段原有的值之上
setTime(Date d) 可以直接把一个Date设置进去
Date getTime() 可以获得日历对象中的当前日期对象

public class CalendarDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calendar cal = Calendar.getInstance();
		
// ==============  get 方法 ==============================
		int year = cal.get(cal.YEAR); //年 
		int month = cal.get(cal.MONTH); // 月, 注意月份是从0开始的, 0-11, 所以给用户看需要加1
		int day_month = cal.get(cal.DAY_OF_MONTH); // 这个月的多少号
		int day_week = cal.get(cal.DAY_OF_WEEK); // 这周的第几天, 外国人是从星期日开始算的
		int day_year = cal.get(cal.DAY_OF_YEAR); // 今年的第多少天
		int hour = cal.get(cal.HOUR); // 时
		int minute = cal.get(cal.MINUTE); //  分
 		int second = cal.get(cal.SECOND); // 秒

		System.out.println(year);
		System.out.println(month);
		System.out.println(day_month);
		System.out.println(day_week);
		System.out.println(day_year);
		System.out.println(hour);
		System.out.println(minute);
		System.out.println(second);

// =============== set 方法 ================================
		cal.set(cal.YEAR, 2222);
		int year1 = cal.get(cal.YEAR); //年 
		System.out.println(year1); // 2222年
		cal.set(cal.YEAR, 2021);
// =============== add 方法 =============================
		long now = System.currentTimeMillis();
		Date date = new Date(now);
		System.out.println(date); //Tue Mar 23 14:16:26 CST 2021
		
		cal.add(cal.MONTH, 20); // 当前月份加20个月
		int year2 = cal.get(cal.YEAR); //年 
		int month2 = cal.get(cal.MONTH); // 月, 注意月份是从0开始的, 0-11
		System.out.println(year2); // 2022年
		System.out.println(month2); // 10 >> 11月

// ============== setTime 方法=======================
		long now1 = System.currentTimeMillis()+24*60*60; // 显示明天的此刻
		Date date1 = new Date(now1);
		cal.setTime(date1);
		
		int date_month1 = cal.get(cal.DAY_OF_MONTH);
		System.out.println(date_month1); // 查看 明天的日期 23 >> 24日

// ============= getTime 方法 ======================
		Date dd = cal.getTime();
		System.out.println(dd); //Tue Mar 23 14:23:30 CST 2021
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值