java学习(五)--日期类的方法

日期类也是我们开发时经常碰到的一个类型。特别是涉及到日期类型和字符串类型之间的一些转换时,经常会不知所措。

特别是要根据需求,转换成不同的表达形式,或者是截取、比较。下面是根据老九学堂的视频资料,整理的一些例子。

package knowledge;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class CalendarDemo {

	public static void main(String[] args) {

		// =========================例1=========================
		// 例1 表示当前系统时间

		// Calendar是一个抽象类,不能直接用new创建一个对象。需要用子类里的getInstance方法创建
//		Calendar cal = new Calendar();
		Calendar cal = Calendar.getInstance();

		// 获取当前时间的年 月 日 小时、、、
		int year = cal.get(Calendar.YEAR);
		int month = cal.get(Calendar.MONTH) + 1;
		int day = cal.get(Calendar.DATE);
		int hour = cal.get(Calendar.HOUR);
		int minute = cal.get(Calendar.MINUTE);
		int second = cal.get(Calendar.SECOND);
		int millSec = cal.get(Calendar.MILLISECOND);

		System.out.println("格式转换前的当前时间:" + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second
				+ ":" + millSec);

		// 用format方法对当前时间进行转换,使得个位数月份日期能以两位数的形式表示,例如 6月 变成06月
		// %02d表示以两位数表示,不满足时以0代替
		String strTime = String.format("%d-%02d-%02d %02d:%d:%02d:%d", year, month, day, hour, minute, second, millSec);
		System.out.println("格式转换后的当前时间:" + strTime);

		System.out.println("=================例2=================");
		// 例2 利用Date表示当前系统时间,但缺点是如果月份为个位数时,不会补齐0
		cal.set(2020, 8, 15, 21, 59, 59);
		// 返回到毫米的时间形式
		Date date = cal.getTime();
		System.out.println("例2的时间-英式:" + date);
		System.out.println("例2的时间-英式:" + date.toString());
		// 删除线表示是过时的方法
		System.out.println("例2的时间-格林尼治:" + date.toGMTString());
		System.out.println("例2的时间-随系统设置的地区的表示方式:" + date.toLocaleString());

		System.out.println("=================例3=================");
		// 例3 利用SimpleDateFormat表示当前系统时间,有点是可以通过自己设置的格式,补齐0
		SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
		String strDate = ft.format(date);
		System.out.println("例3的时间:" + strDate);

		System.out.println("=================例4=================");
		// 例4 将字符串转换为Date型
		Date dt = null;
		try {
			dt = ft.parse("2020-05-01 12:45:54:666");
		} catch (ParseException e) {
			e.printStackTrace();
		}
		System.out.println("例4的当前时间:" + dt.toLocaleString());

		System.out.println("=================例5=================");
		// 例5 比较两个日期的相差天数
		Calendar cal1 = new GregorianCalendar(2020, 8, 23);
		Calendar cal2 = cal;
		// Math.abs两数之差的绝对值
		long diff = Math.abs(cal1.getTimeInMillis() - cal2.getTimeInMillis());
		int diffDays = (int) (diff / 1000 / 60 / 60 / 24);
		System.out.println(
				"cal1:" + cal1.get(Calendar.YEAR) + "-" + cal1.get(Calendar.MONTH) + "-" + cal1.get(Calendar.DATE));
		System.out.println(
				"cal2:" + cal2.get(Calendar.YEAR) + "-" + cal2.get(Calendar.MONTH) + "-" + cal2.get(Calendar.DATE));

		System.out.println("例5的时间差:" + diffDays);

		// 日期的加减
		cal1.add(Calendar.MONTH, 3);
		cal1.add(Calendar.YEAR, -3);
		System.out.println(
				"cal1加减后的日期:" + cal1.get(Calendar.YEAR) + "-" + cal1.get(Calendar.MONTH) + "-" + cal1.get(Calendar.DATE));

	}

}

执行结果如下

格式转换前的当前时间:2020-5-20 9:12:23:90
格式转换后的当前时间:2020-05-20 09:12:23:90
=================例2=================
例2的时间-英式:Tue Sep 15 21:59:59 JST 2020
例2的时间-英式:Tue Sep 15 21:59:59 JST 2020
例2的时间-格林尼治:15 Sep 2020 12:59:59 GMT
例2的时间-随系统设置的地区的表示方式:2020-9-15 21:59:59
=================例3=================
例3的时间:2020-09-15 21:59:59:090
=================例4=================
例4的当前时间:2020-5-1 12:45:54
=================例5=================
cal1:2020-8-23
cal2:2020-8-15
例5的时间差:7
cal1加减后的日期:2017-11-23

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值