Date类以及相关的格式函数及日期函数 不断补充

前言

学习一个类的方法,我会从JDK api中的构造函数开始(Date类有点过时了):

Date类

规则

Date类的一些规则说明:
类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式:
年份 y 由整数 y - 1900 表示。
月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
日期(一月中的某天)按通常方式由整数 1 至 31 表示。
小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
分钟按通常方式由 0 至 59 的整数表示。

秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定。

Date类的构造函数:

在这里插入图片描述

方法摘要

在这里插入图片描述
在这里插入图片描述

示例代码

package sise.Date;

import java.util.Date;

public class DateExample5 {
	public static void main(String[] args) {
		
		//CST中国标准时间
		Date date1 = new Date();
		System.out.println(date1);
		//Thu Dec 31 16:42:00 CST 2020
		
		
		Date date2=new Date(2011,12,28);
		//此处想显示自己想要日期,参照之前的date类的日期规则
		Date date21=new Date(2011-1900,8-1,31);
		Date date22=new Date(2011-1900,2-1,31);//2月有点不一样
		System.out.println(date2);
		//Sun Jan 28 00:00:00 CST 3912
		System.out.println(date21);
		//Wed Aug 31 00:00:00 CST 2011
		System.out.println(date22);
		//本来是2月份的但是2月只有28天,周期是31天,所以进3
		//Thu Mar 03 00:00:00 CST 2011
		
		
		Date date3=new Date(2019-1900,10-1,28,15,49,59);
		System.out.println(date3);
		//Mon Oct 28 14:49:59 CST 2019
		
		
		Date date4=new Date();
		//获取距离历年的毫秒数
		//以下的方法参考使用
		long dateSecondTime=date4.getTime();
		System.out.println(dateSecondTime);
		//输出毫秒数1609908277179
		
		//还原为原来的有格式人可以直接看出来的
		date4.setTime(dateSecondTime);
		//默认调用toString()
		System.out.println(date4.toString());
		
//		Date(String s) 
//      查看源码了解,已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String s) 取代。 
		long oldTime = (new Date("2012/12/25 20:11:11")).getTime(); //得到毫秒数  
		Date newTime = new Date(oldTime); //就得到普通的时间了 
		System.out.println(oldTime);
		System.out.println(newTime);
		
		/**
		 * 将毫秒转化为人可以直接看清楚的
		 * 两种方式
		 */
		//上面的date4和newTime可以看出来
		
	}
}

格式化和解析日期字符串类

常用DateFormat抽象类中的已知子类SimpleDateFormat 这里规范了很多的字符串的具体格式。以下讲到DateFormat类的一些用法。
在这里插入图片描述
local类表示时区,有一些字段(成员变量)可以选,比如CHINA
在这里插入图片描述

相关摘要

以下是DateFormat类:

请添加图片描述请添加图片描述
请添加图片描述
请添加图片描述

以下为SimpleDateFormat类

在这里插入图片描述
在这里插入图片描述
以下是SimpleDateFormat类的应用,给生日文本框限制格式输入:

在这里插入图片描述
在这里插入图片描述

实例代码

有关DateFormat类的一些方法

public class DateFormTest {
	public static void main(String[] args) {

		Date ds[] = new Date[5];
		ds[0] = new Date();
		System.out.println(ds[0]);
		ds[3] = new Date(2099 - 1900, 6 - 1, 6, 13, 23, 32);
		System.out.println(ds[3]);

		/**
		 * 这里检验getTimeInstance和getDateInstance方法参数改变有什么作用
		 */

//后面local类对象表示了特定的地理、政治和文化地区,DateFormat类
		DateFormat df = DateFormat.getTimeInstance(DateFormat.FULL, Locale.CHINA);
		DateFormat df1 = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);

		// format方法转化为String
		String f1 = df.format(ds[3]);
		System.out.println(f1);
		//下午01时23分32秒 CST
		String f2 = df1.format(ds[3]);
		System.out.println(f2);
		//2099年6月6日 星期六
		try {
			// parse方法将String类型转化为Date类
			Date p1 = df.parse(f1);
//			Date p2 = df.parse(f2);
//			java.text.ParseException: Unparseable date: "2099年6月6日 星期六"
//			at java.text.DateFormat.parse(Unknown Source)
			System.out.println(p1);
//			System.out.println(p2);
		} catch (ParseException e) {

			e.printStackTrace();
		}

	}
}

有关SimpleDateFormat类的一些代码

public class SimpleDateTest {
	public static void main(String[] args) {
		SimpleDateFormat aDate = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
		SimpleDateFormat bDate = new SimpleDateFormat("yyyy张-MMMM-ddd");
		//MM大于三个就显示中文  一月,也可以添加任意中文字符满足自己的要求
		//2021张-一月-006
		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));
	}

}

输出:
2021-01-06 14:45:37
2021张-一月-006
2021年01月06日 14时45分37秒
21/01/06 14:45
2021-01-06 14:45:37
2021年01月06日 14时45分37秒 星期三
一年中的第 6 天 一年中第2个星期 一月中第2个星期 在一天中14时 CST时区

下面说明SimpleDateFormat类的parse方法和format方法有什么用:

public class SimpleDateTest {
	public static void main(String[] args) {
		String str_String="2010-02-22小朋友  12:32:32"; 
		SimpleDateFormat aDate = new SimpleDateFormat("yyyy-MM-dd小朋友  HH:mm:ss");
		try {
			//下面的str_String的格式要和SimpleDateFormat的格式一模一样才不会报错
			Date p = aDate.parse(str_String);
			System.out.println(p);
			long time = p.getTime();
			long parse = p.parse("Mon Feb 22 12:32:32 CST 2010");
		    //parse方法有误差,毫秒级就会被忽略可参考附录的三种方法,最后总结又说
			System.out.println(aDate.format(parse));
		     
		     System.out.println(aDate.format(time));
		     
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		long now = System.currentTimeMillis();
		//获取系统时间的距离1970年的毫秒数
		System.out.println(aDate.format(now));
	}

}

输出:
Mon Feb 22 12:32:32 CST 2010
2010-02-23小朋友 02:32:32
2010-02-22小朋友 12:32:32
2021-01-06小朋友 15:17:43

附录

闰年与闰月

平常年份每年365天,二月为28天,闰年为366天,二月为29天。因此,每400年中有97个闰年,闰年在2月末增加一天,闰年366天。
详情

1月到12月的英语单词是什么?

详细

Java为什么计算时间从1970年1月1日开始

详细

Date距离1970的毫秒数三种方法

详细

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值