Java基础15_Java日期和时间

Java日期时间
java.util包提供了Date类来封装当前的日期和时间,Date类提供两个构造行数来实例化Date对象。

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

Date()

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

Date(long millisec)

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

Java基础15_Java日期和时间_第1张图片

获取当前日期时间
Java中获取当前日期和时间都很简单,使用Date对象的toString()方法来打印当前日期和时间,如下所示:

import java.util.*
public class DateDemo{
	//初始化Date对象
	Date date = new Date();
	//使用toString()函数显示日期时间
	System.out,println(date.toString());
}

执行之后结果为:
在这里插入图片描述

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

  • 使用getTime()方法获取两个日期(自1970年一月一日经历的微妙数值,然后比较这两个值)
  • 使用方法before(),after()和equals()。例如,一个月的12号比18号早,则new Date(99,2,12).before(new Date(99,2,18))返回true。
  • 使用compareTo()方法,它是由Compareable接口定义的,Date类也实现了这个接口。

使用SimpleDateFormat格式化日期

SimpleDateFormat是一个以语言环境敏感的方式来格式化和分析日期的类,SimpleDateFormat允许你选择仍和用户自定义事件格式来运行,例如:

import java.util.*;
imprort java.text.*;
public class DateDemo{
	public static void main(String[] args){
		Date dNow = new Date();
		SimpleDateFormat ft = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
		System.out.prinfln("Current Date :"+ft.format(dNow));
}
}

执行后:
在这里插入图片描述

简单的DateFormat格式化编码

事件模式字符串用来指定时间格式,在此模式中,所有的ASCII字母都被保留为模式字母,定义如下:
Java基础15_Java日期和时间_第2张图片

使用printf格式化日期
printf方法可以很轻松的格式化时间和日期。使用两个字母格式,他以t开头并且以下面表格中的一个字母结尾。例如:

import java.util.Date;
public class DateDemo{
	public static void main(String[] args){
		Date date = new Date();
		String str = String.format("Current Date/Time: %tc",date);
		System.out.printf(str);
}
}

执行出来的结果是:
在这里插入图片描述

若果你需要重复提供日期,那么利用这种方式来格式化它的每一部分就有点复杂了,因此,可以利用一个格式化字符串指出要被格式化的参数的索引。

索引必须紧跟在%后面,并且需要以$结束。例如:

import java.util.Date;
public class DateDemo{
	public static void main(String[] args){
	Date date = new Date();
	System.out.printf("%1$s %2$tB %2$td,%2$tY","Due date:",date);
}
}

执行出来的结果是:
在这里插入图片描述

日期和时间转换字符:

Java基础15_Java日期和时间_第3张图片
Java基础15_Java日期和时间_第4张图片

解析字符串为施加

SimpleDateFormat类有一些附加的方法,特别是parse(),它视图按照给定的SimpleDateFormat对象的格式化储存来解析字符串。例如:

import java.util.*;
import java.text.*;
public class DateDemo{
	public static void main(String[] args){
		SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
		String input = args.lenght == 0 ? "1818-11-11" : args[0];
		System.oyt.print(input+"parses as ");
		Date t ;

		try{
		t = ft.format(input);
		System.out.println(t);
}catch(ParseException e){
		System.out.println("Unparseable using" + ft);
}
}
}

编译出结果为:
在这里插入图片描述

测量时间
下面的一个例子表名如何测试时间间隔(以毫秒为单位)

import java.util.*;
public class DiffDemo{
	public static void main(String[] args){
		try{
		//System.currentTimeMillis()其实就等于 new Date().getTime(),但是效率和内存才、占用都优于后者;,详情可以参考https://www.cnblogs.com/wuchen/archive/2012/06/30/2570746.html
			long start = System.currentTimeMillis();
			System.out.println(new Date()+"\n");
			 System.out.println(new Date( ) + "\n");
         	Thread.sleep(5*60*10);
        	 System.out.println(new Date( ) + "\n");
        	 long end = System.currentTimeMillis( );
        	 long diff = end - start;
        	 System.out.println("Difference is : " + diff);
		}catch(Exception e){
		}
}
}

编译结果为:
Java基础15_Java日期和时间_第5张图片

Calendar类
我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

创建一个代表系统当前日期的Calendar对象

Calendar c = Calendar.getInstance();//默认是当前日期

创建一个指定日期的Calendar对象
使用Calendar类才、代表特定的时间,需要首先创建一个Calendar的对象,然后在设定该对象重的年月日参数来完成

//创建一个代表2019年6月4日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2019, 6 - 1, 4);

Calendar类对象字段类型:

Java基础15_Java日期和时间_第6张图片

Calendar类对象信息的设置
Set设置:
如:

Calendar c1 = Calendar.getInstance();
调用:
public final void set(int year,int month,int date)

c1.set(2019,6-1,5);//把Calendar对象c1的年月日设为2019.5.5

利用字段类型设置
如果只设定某个字段,例如日期的值,则可以使用set方法:

public void set(int field,int value)

把c1对象的日期设置为10号,其他所有数值将会被重新计算

c1.set(Calendar.DATE,10);

其他字段属性set的意义以此类推。

Add设置:

Calendar c1 = Calendar.getInstance();
//把c1对象的日期加上10,也就是c1也就表示十天后的日期,其他所有的数值将会被重新计算
c1.add(Calendar.DATE,10);
//反之把c1对象的日期减掉10,也就是c1也就表示十天前的日期,其他所有的数值将会被重新计算
c1.add(Calendar.DATE,-10);

其他字段属性的add的意义以此类推

Calendar类对象信息的获得
Java基础15_Java日期和时间_第7张图片

GregorianCalendar类(还没使用到过):
Calendar类实现了公里日历,GregorianCalendar是Calendar类的一个具体实现。
Calendar的getInstance()方法返回一个默认当前的语言环境和时区初始化的GregorianCalendar对象。GregorianCalendar定义了两个字段:AD和BC。这是代表公里定义的两个时代。
下面列出了GregorianCalendar对象的几个构造方法:
Java基础15_Java日期和时间_第8张图片

这里是GregorianCalendar类提供的一些有用的方法列表
Java基础15_Java日期和时间_第9张图片

Java基础15_Java日期和时间_第10张图片

Java基础15_Java日期和时间_第11张图片

你可能感兴趣的:(Java基础)