1、Date
java.util 包提供了 Date 類來封裝當前的日期和時間。 Date 類提供兩個構造函數來實例化 Date 對象。
第一個構造函數使用當前日期和時間來初始化對象。
Date( )
第二個構造函數接收一個參數,該參數是從1970年1月1日起的毫秒數。
Date(long date)
2、Date常用方法
3、使用printf格式化日期
printf 方法可以很輕鬆地格式化時間和日期。使用兩個字母格式,它以 %t 開頭並且以下面表格中的一個字母結尾。
實例
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 對象
Date date = new Date();
//c的使用
System.out.printf("全部日期和時間信息:%tc%n",date);
//f的使用
System.out.printf("年-月-日格式:%tF%n",date);
//d的使用
System.out.printf("月/日/年格式:%tD%n",date);
//r的使用
System.out.printf("HH:MM:SS PM格式(12時制):%tr%n",date);
//t的使用
System.out.printf("HH:MM:SS格式(24時制):%tT%n",date);
//R的使用
System.out.printf("HH:MM格式(24時制):%tR",date);
}
}
4、Calendar類
抽象類 Calendar 提供了一組方法,允許把以毫秒爲單位的時間轉換成一些有用的時間組成部分。Calendar 不能直接創建對象,但可以使用靜態方法 getInstance() 獲得代表當前日期的日曆對象。
Calendar c = Calendar.getInstance();//默認是當前日期
5、Calendar方法
6、Calendar類對象字段類型
Calendar類中用以下這些常量表示不同的意義
7、Calendar類對象信息的設置
Set設置
如:
Calendar c1 = Calendar.getInstance();
調用:
public final void set(int year,int month,int date)
c1.set(2019, 11, 14);//把Calendar對象c1的年月日分別設這爲:2019、11、14
利用字段類型設置
如果只設定某個字段,例如日期的值,則可以使用如下set方法:
public void set(int field,int value)
把 c1對象代表的日期設置爲15號,其它所有的數值會被重新計算
c1.set(Calendar.DATE,15);
把c1對象代表的年份設置爲2018年,其他的所有數值會被重新計算
c1.set(Calendar.YEAR,2018);
Add設置
Calendar c1 = Calendar.getInstance();
把c1對象的日期加上10,也就是c1也就表示爲10天后的日期,其它所有的數值會被重新計算
c1.add(Calendar.DATE, 10);
把c1對象的日期減去10,也就是c1也就表示爲10天前的日期,其它所有的數值會被重新計算
c1.add(Calendar.DATE, -10);
其他字段屬性的add的意義以此類推
Calendar類對象信息的獲得
Calendar c1 = Calendar.getInstance();
// 獲得年份
int year = c1.get(Calendar.YEAR);
// 獲得月份
int month = c1.get(Calendar.MONTH) + 1;
// 獲得日期
int date = c1.get(Calendar.DATE);
// 獲得小時
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 獲得分鐘
int minute = c1.get(Calendar.MINUTE);
// 獲得秒
int second = c1.get(Calendar.SECOND);
// 獲得星期幾(注意(這個與Date類是不同的):1代表星期日、2代表星期1、3代表星期二,以此類推)
int day = c1.get(Calendar.DAY_OF_WEEK);
8、LocalDate和LocalTime
在JAVA中,常用的處理日期和時間的類主要有Date,Calendar,而在JDK1.8中,新增了兩個處理日期和時間的類,一個是LocalDate,另一個是LocalTime。LocalDate和LocalTime線程安全,而且不能修改。
LocalDate主要是用來處理日期的類
主要有以下方法:
LocalTime主要是用來處理時間的類
主要有以下方法:
代碼實例:
package timedemo;
import org.junit.Test;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @author 黃秋平
* @date 2019-11-15 16:52
**/
public class DateTest {
/**
* 日期格式化
* */
@Test
public void Test01(){
/**
* SHORT是完全數字的,如12.13.52或3:30pm
* MEDIUM較長,如Jan 12, 1952
* LONG較長,如January 12, 1952或3:30:32pm
* FULL是完全指定的,如Tuesday, April 12, 1952 AD or 3:30:42pm PST
*
* */
//獲取不同格式化風格和中國環境的日期
DateFormat df1=DateFormat.getDateInstance(DateFormat.SHORT);
DateFormat df2=DateFormat.getDateInstance(DateFormat.FULL);
DateFormat df3=DateFormat.getDateInstance(DateFormat.MEDIUM);
DateFormat df4=DateFormat.getDateInstance(DateFormat.LONG);
//獲取不同格式化風格和中國環境的時間
DateFormat df5=DateFormat.getTimeInstance(DateFormat.SHORT);
DateFormat df6=DateFormat.getTimeInstance(DateFormat.FULL);
DateFormat df7=DateFormat.getTimeInstance(DateFormat.MEDIUM);
DateFormat df8=DateFormat.getTimeInstance(DateFormat.LONG);
//將不同格式化風格的日期格式化爲日期字符串
String date1=df1.format(new Date());
String date2=df2.format(new Date());
String date3=df3.format(new Date());
String date4=df4.format(new Date());
//將不同格式化風格的時間格式化爲時間字符串
String time1=df5.format(new Date());
String time2=df6.format(new Date());
String time3=df7.format(new Date());
String time4=df8.format(new Date());
//輸出日期
System.out.println("SHORT:"+date1+" "+time1);
System.out.println("FULL:"+date2+" "+time2);
System.out.println("MEDIUM:"+date3+" "+time3);
System.out.println("LONG:"+date4+" "+time4);
}
/**
* 對日期增減操作:年
* */
@Test
public void Test02(){
//實例化Date對象
Date date = new Date();
//實例化SimpleDateFormat對象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//輸出當時間
System.out.println("當前時間:"+sdf.format(date));
//返回一個Calendar對象,其日曆字段已使用當前日期和時間進行初始化
Calendar cal = Calendar.getInstance();
//設置字段中的值
cal.setTime(date);
//amount值表示對當前時間增減,1爲+1,-1爲-1
cal.add(Calendar.YEAR, 10);
//實例化Date對象
Date date1 = cal.getTime();
//輸出增減後的時間
System.out.println("增減後的時間:"+sdf.format(date1));
}
/**
* 對日期增減操作:月
* */
@Test
public void Test03(){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("當前時間:"+sdf.format(date));
Calendar cal = Calendar.getInstance();
cal.setTime(date);
//amount值表示對當前時間增減,1爲+1,-1爲-1
cal.add(Calendar.MONTH, 10);
Date date1 = cal.getTime();
System.out.println("增減後的時間:"+sdf.format(date1));
}
/**
* 對日期增減操作:小時
* */
@Test
public void Test04() {
String oneHoursAgoTime = "";
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH");
System.out.println("當前時間:"+sdf.format(date));
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
rightNow.add(Calendar.HOUR, -1);
Date dt1 = rightNow.getTime();
System.out.println("增減後的時間:"+sdf.format(dt1));
}
}