12补充-Date

大家好,我是被白菜拱的猪。

一、Date

1.
计算机中规定了一个系统的时间,依次作为时间计算的原点,1970年1月1日0时0分0秒000毫秒,格林威治时间。

		Date d = new Date(24*60*60*1000);
		System.out.println(d);
		
		Date d2 = new Date();
		System.out.println(d2);
		
		//任意一个日期使用 getTime 方法都会得到当前日期时间到 时间原点的毫秒数
		System.out.println(d2.getTime());
		
		long 目标时间毫秒数 = d2.getTime() + 45L * 24 * 60 * 60 * 1000;
		Date d3 = new Date(目标时间毫秒数);
		System.out.println(d3);

Date的构造函数,参数是毫秒数,原点时间加上这个毫秒数然后计算加上过后的日期。
.getTime()方法时获取当前时间到时间原点的毫秒数。
2. SimpleDateFormat
SimpleDateFormat是简单日期格式化工具,format可以把 Date ----> String

SimpleDateFormat sdf = new SimpleDateFormat("y-MM-dd HH:mm:ss");
		String str = sdf.format(d);
		System.out.println(str);
		
		String str2 = "2019-01-31 23:59:59";
		
			try {
			//parse方法 把String ---- Date
			Date d2 = sdf.parse(str2);
			System.out.println(d2);
		} catch (Exception e) {
			e.printStackTrace();
		}

SimpleDateFormat()里面的参数是格式化的格式
format()方法与parse()方法功能相反
前者是将Date转换为String
后者是将String转换为Date(会有异常产生)
3.
我们通过一道题更加深刻的了解Date与SimpleDateFormat
已知时间:20060521090430,编程输出该时间的后30天零5小时的时间是多少?
(1)首先“20060521090430”是一个字符串,第一步我们想肯定是将字符串转化为Date类型,那什么方法能帮助我们解决这个问题呢?对没错,SimpleDateFormat中的parse方法。

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		//我们有一个 String 类型的日期和时间
		String str = "20060521090430";
		System.out.println(str);
		//通过parse方法,将 String 转为 Date
		Date d = sdf.parse(str);

(2)将字符串转化为时间之后,我们就要算30天零5小时,在Date中算多少时间之前我们是通过毫秒来计算,因此我们用getTime()获取毫秒数
(3)然后计算目标毫秒数,也就是加上((30L*24) + 5) * 60 * 60 * 1000
(4)在将毫秒数转化为Date
(5)最后format方法得到我们想要的时间格式

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		//我们有一个 String 类型的日期和时间
		String str = "20060521090430";
		System.out.println(str);
		
		//通过parse方法,将 String 转为 Date
		Date d = sdf.parse(str);
		
		//将 Date 转为毫秒(long)
		long l = d.getTime();
		
		//计算得到目标毫秒数
		long l2 = l + ((30L*24) + 5) * 60 * 60 * 1000;
		
		//讲目标时间从 long 转为 Date
		Date d2 = new Date(l2);
		
		//再将 Date 转为 String
		String str2 = sdf.format(d2);
		System.out.println(str2);
发布了24 篇原创文章 · 获赞 4 · 访问量 2038

猜你喜欢

转载自blog.csdn.net/weixin_44226263/article/details/97619718