JavaSE入门学习32:Java常用类之时间日期相关类

来源:互联网 发布:淘宝怎么买爱奇艺会员 编辑:程序博客网 时间:2024/05/18 03:49

       在Java程序中与日期相关的类包括java.util.Date类、java.text.SimpleDateFormat类、java.util.calendar类和

java.util.GregorianCalendar类。在这里我们只是简单地介绍Date类、SimpleDateFormat类和calendar类的使用。

       一Date类表示时间

       (1)认识Date类

       在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用java.util包中的Date类。这个类最主要

的作用就是获取当前时间。java.util包提供了Date类来封装当前的日期和时间。

       Date类提供两个构造函数来实例化Date对象:

       1)第一个构造函数使用当前日期和时间来初始化对象:

<span style="font-size:18px;">Date( )</span>

       2)第二个构造函数接收一个参数,该参数是从1970年1月1日起的微秒数:

<span style="font-size:18px;">Date(long millisec)</span>

       Date对象创建以后,可以调用下面的方法:

       

       我们来看下Date类的使用,Java中获取当前日期和时间很简单,使用Date对象的toString()方法来打印当前日期和

时间,如下所示:

       实例代码为:

<span style="font-size:18px;">import java.util.*;public class Test{public static void main(String[] args){                //初始化Date对象Date d = new Date();//直接输出日期时间System.out.println(d);                //使用toString()函数显示日期时间System.out.println(d.toString());}}</span>
       使用Date类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出Date对象显示当前的时间,也

可以使用Date对象的toString()方法来打印当前日期和时间显示的结果如下:

       其中,Mon代表Monday(星期一), Mar代表March(三月),28代表28号, CST代表China Standard Time(中国标

准时间,也就是北京时间,东八区),2016代表2016年。

       (2)日期比较

       Java使用以下三种方法来比较两个日期:

       1)使用getTime( )方法获取两个日期(自1970年1月1日经历的微妙数值),然后比较这两个值。

       2)使用方法before(),after()和equals()。例如,一个月的12号比18号早,则new Date(99, 2, 12).before(new Date

 (99, 2, 18))返回true。

       3)使用compareTo()方法,它是由Comparable接口定义的,Date类实现了这个接口。

       二使用SimpleDateFormat类格式化日期

       从上面的输出结果中,我们发现,默认的时间格式不是很友好,与我们日常看到的日期格式不太一样,如果想要

按指定的格式进行显示,如2016-03-11 09:22:30 ,那该怎么做呢?

       SimpleDateFormat类是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat类允许你选择任

何用户自定义日期时间格式来运行。此时就到了java.text包中的SimpleDateFormat类,可以使用 SimpleDateFormat类

来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可将文本转换为日期。

       (1)使用format()方法将日期转换为指定格式的文本

       实例代码为:

<span style="font-size:18px;">import java.util.*;import java.text.*;public class Test{public static void main(String[] args) throws ParseException{//创建日期格式的字符串Date d = new Date();//创建SimpleDateFormat对象,指定目标格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//调用format()方法,格式化时间,转换为指定格式字符串String day = sdf.format(d);//输出转换后的字符串System.out.println("当前时间:"+ day);}}</span>
       代码中的"yyyy-MM-dd HH:mm:ss"为预定义格式化字符串, yyyy表示四位年, MM表示两位月份,dd表示两位日

期,HH表示小时(使用24小时制), mm表示分钟, ss表示秒,这样就指定了转换的目标格式,最后调用format()方法

将时间转换为指定的格式的字符串。

       运行结果: 


       (2)使用parse()方法将文本转换为日期

       实例代码:

<span style="font-size:18px;">import java.util.*;import java.text.*;public class Test{public static void main(String[] args) throws ParseException{//创建日期格式的字符串String day = "2016年03月01日 10:30:25";//创建SimpleDateFormat对象,指定目标格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//调用parse()方法,将字符串转换为日期Date date = sdf.parse(day);//输出转换后的字符串System.out.println(date);}}</span>
       代码中的"yyyy年MM月dd日 HH:mm:ss"指定了字符串的日期格式,调用parse()方法将文本转换为日期。

       运行结果:

 

       (3)需要注意事项

       1)调用SimpleDateFormat对象的parse()方法时可能会出现转换异常,即ParseException,因此需要进行异常处

理,因此这个方法并不会经常使用。

       2)使用Date类时需要导入java.util包,使用SimpleDateFormat时需要导入java.text包。

       实例代码:

<span style="font-size:18px;">import java.util.*;import java.text.*;public class Test{public static void main(String[] args) throws ParseException{//使用format()方法将日期转换为指定格式的文本SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        //创建Date对象,表示当前时间                Date now=new Date();                        //调用format()方法,将日期转换为字符串并输出System.out.println(sdf1.format(now));System.out.println(sdf2.format(now));System.out.println(sdf3.format(now));//使用parse(方法将文本转换为日期String d = "2016-3-1 21:05:36";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");                        //调用parse()方法,将字符串转换为日期Date date = sdf.parse(d);        System.out.println(date);}}</span>
        运行结果:


        三Calendar类的应用

        (1)认识Calendar类

        Date类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设

计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用Calendar类进行时间和日期的处理。

        java.util.Calendar类是一个抽象类,可以通过调用getInstance()静态方法获取一个 Calendar对象,此对象已由当

前日期时间初始化,即默认代表当前时间,创建一个代表系统当前日期的Calendar对象,如:

<span style="font-size:18px;">Calendar c = Calendar.getInstance();//默认是当前日期</span>

        (2)Calendar类对象字段类型

        Calendar类中用一下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想:

        那么如何使用Calendar获取年、月、日、时间等信息呢?我们来看下面的代码:

<span style="font-size:18px;">import java.util.*;public class Test{public static void main(String[] args){//创建Calendar对象Calendar c = Calendar.getInstance();//获取年int year = c.get(Calendar.YEAR);//获取月份,0表示1月份int month = c.get(Calendar.MONTH);//获取日期int day = c.get(Calendar.DAY_OF_MONTH);//获取小时int hour = c.get(Calendar.HOUR_OF_DAY);//获取分钟int minute = c.get(Calendar.MINUTE);//获取秒int second = c.get(Calendar.SECOND);//输出结果System.out.println("当前时间:"+ year + "-" + (month+1) + "-" + day + " " + hour + ":" + minute + ":" + second);}}</span>
       其中,调用Calendar类的getInstance()方法获取一个实例,然后通过调用get()方法获取日期时间信息,参数为需

要获得的字段的值,Calendar.Year等为Calendar类中定义的静态常量。

       运行结果: 

      (3)Calendar类常用方法

      Calendar类提供了getTime()方法,用来获取Date对象,完成Calendar和Date的转换,还可通过getTimeInMillis()

方法,获取此Calendar的时间值,以毫秒为单位。如下所示:

<span style="font-size:18px;">import java.util.*;public class Test{public static void main(String[] args){//创建Calendar对象Calendar c = Calendar.getInstance();//将Calendar对象转换为Date对象Date date = c.getTime();//获取当前秒数Long time = c.getTimeInMillis();//输出结果System.out.println("当前时间:"+ date);System.out.println("当前毫秒数:"+ time);}}</span>
       运行结果:

       实例代码:

<span style="font-size:18px;">import java.util.*;import java.text.*;public class Test{public static void main(String[] args){//创建Canlendar对象Calendar c = Calendar.getInstance();        //将Calendar对象转换为Date对象Date date = c.getTime();        //创建SimpleDateFormat对象,指定目标格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        //将日期转换为指定格式的字符串String now = sdf.format(date);System.out.println("当前时间:" + now);}}</span>
       运行结果:



2 0