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

       在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对象创建以后,可以调用下面的方法:

       JavaSE入门学习32:Java常用类之时间日期相关类_第1张图片

       我们来看下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()方法来打印当前日期和时间显示的结果如下:

JavaSE入门学习32:Java常用类之时间日期相关类_第2张图片
       其中,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()方法将文本转换为日期。

       运行结果:

 JavaSE入门学习32:Java常用类之时间日期相关类_第3张图片

       (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>
        运行结果:

JavaSE入门学习32:Java常用类之时间日期相关类_第4张图片

        三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内的很多类其实都是采用的这种思想:

JavaSE入门学习32:Java常用类之时间日期相关类_第5张图片
        那么如何使用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类中定义的静态常量。

       运行结果: 

JavaSE入门学习32:Java常用类之时间日期相关类_第6张图片

      (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>
       运行结果:

JavaSE入门学习32:Java常用类之时间日期相关类_第7张图片
       实例代码:

<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>
       运行结果:

JavaSE入门学习32:Java常用类之时间日期相关类_第8张图片


你可能感兴趣的:(java,JavaSE,Date类,Calendar类,Java中的时间日期)