Java中的Date类SimpleDateformat类和Calentar类的知识

总结一下日期类型的知识,日期类型和字符编码以及访问目录这些问题都很简单但是涉及到的知识点比较杂,所以让我这样的小白感到很难的样子,但其实很简单。

Date类

这个类就是一个日期类,主要就是让我们获取到当前时间(常用),或者是某个特定时间(不常用)

如下代码例子:

        Date nowtime = new Date();
		System.out.println(nowtime);
		Date nowtime1 = new Date(100000000);
		System.out.println(nowtime1);

结果为:
Sun Aug 26 10:12:54 CST 2018
Fri Jan 02 11:46:40 CST 1970

值得注意的就是当使用Date的无参构造器时获得的是当前时间,当里面有参数时是从“公历”开始算,即1970年一月一日,参数的单位是毫秒。

SimpleDateFormat类

这个类应该算是我们在开发中最常用的,最常用的构造器就是

public SimpleDateFormat(String pattern)
    {
        this(pattern, Locale.getDefault(Locale.Category.FORMAT));
    }

(做软件到现在使用这个类绝大部分都只是用这个构造器,所以就列了这一个,其实都是死的,知道它是干什么的就好了,没什么思想在里面,等之后厉害了在看源代码)

这个类的作用就是格式化时间,上面的date获取到的时间格式是不是看着很别扭,所以有了这个类,当然这个类还有一个用法很重要,就是负责字符串和时间格式之间的转换,看代码:

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(nowtime));
结果:
2018-08-26

时间格式和字符串格式之间的转化
字符串转成日期格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String myDate ="2018-08-26";
Date d=sdf.parse(myDate);//此方法返回值就是Date类型,有个异常要抛
System.out.println(d);
结果为:
Sun Aug 26 00:00:00 CST 2018

日期格式转成字符串
Date nowtime = new Date();
System.out.println(nowtime);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String d=sdf.format(nowtime);
System.out.println(d); 
结果为:
Sun Aug 26 10:33:13 CST 2018
2018-08-26
		 

这个类的大致用法就是这些了,剩下的还有一些死东西,比如说表示日期的字符这些东西都是固定的,忘记时直接查就行。

Calendar类

此类存在的意义是,之前的date类要是想要获得某个具体的日期还得从1970年算毫秒数,有个这个类直接调用其内部的API方法就可以得到具体日期了。

另外此类是一个抽象类,所以不能直接创建对象,但是可以根据起子类的

public abstract class Calendar implements Serializable, Cloneable, Comparable 

用法如下代码:

Calendar calendar=Calendar.getInstance();
		calendar.setTime(nowtime);
		int year=calendar.get(Calendar.YEAR);
		int mouth = calendar.get(Calendar.MONTH)+1;
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		int hour=calendar.get(Calendar.HOUR_OF_DAY);
		System.out.println(year+"年"+mouth+"月"+day+"日"+hour+"时");

其实也没啥东西,调用相应的API方法来获取相应的时间(年月日)

接下来说一个String类的日期类型转化的知识,也是今天刚学到的,不得不感叹String的强大。

先上代码:

        Date nowtime = new Date();//获取当前时间        
        Date nowtime1 = new Date(100000000);//获取1970年之后的时间
		System.out.println(nowtime1);
		String s1=String.format("%tY年%tm月%td日", nowtime,nowtime,nowtime1);
        //直接用String来进行日期格式转化,注意nowtime和nowtime1并不是同一个时间
		System.out.println(s1);
		String s2=String.format("%tF", nowtime);
        //这也是直接用String对时间格式进行转化
		System.out.println(s2);
		Date nowtime = new Date();
		String str1=String.format("%tY年%
运行结果为:
Fri Jan 02 11:46:40 CST 1970
2018年08月02日
2018-08-26
2018年08月26日
2018-08-26
2018年8月26日10时

可以使用String来代替SimpleDateFormat这个类的操作。

参考书籍:Java2实用教程第五版

 

你可能感兴趣的:(Java)