Date類
構造函數
Date() 建立一個Date對象,表示目前這一刻的時間
Date(long date) 建立一個Date對象,表示:從1970年1月1日0時0分0秒 後 過了date毫秒 後的那一刻
常用方法
long getTime() 擷取的是目前Date對象表示的時間與1970年1月1日0時0分0秒之間的毫秒差
void setTime(long time) 設定此 Date 對象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以後 time 毫秒的時間點
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
// Date() 建立一個Date對象,表示目前時間
Date d1 = new Date();
System.out.println(d1);
// Date(long date) 建立一個Date對象,表示:從1970年1月1日0時0分0秒 後 過了date毫秒 後的那一刻。
Date d2 = new Date(0);
System.out.println(d2);
// 表示1個小時後
Date d3 = new Date(1000 * 60 * 60);
System.out.println(d3);
// 表示1天後
Date d4 = new Date(1000 * 60 * 60 * 24);
System.out.println(d4);
// 表示1個月後
Date d5 = new Date(1000 * 60 * 60 * 24 * 31L);
System.out.println(d5);
// long getTime() 擷取的是目前Date對象表示的時間與1970年1月1日0時0分0秒之間的毫秒差
Date d6 = new Date();
System.out.println(d6.getTime());
System.out.println(System.currentTimeMillis());
// void setTime(long time) 設定此 Date 對象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以後 time 毫秒的時間點。
// 表示1970的2小時後
// 方式1:構造函數
Date d7 = new Date(1000 * 60 * 60 * 2);
System.out.println(d7);// Thu Jan 01 10:00:00 CST 1970
// 方式2:setTime()
Date d8 = new Date();
d8.setTime(1000 * 60 * 60 * 2);
System.out.println(d8);// Thu Jan 01 10:00:00 CST 1970
}
}
運作結果:
Tue Feb 19 20:35:00 CST 2019
Thu Jan 01 08:00:00 CST 1970
Thu Jan 01 09:00:00 CST 1970
Fri Jan 02 08:00:00 CST 1970
Sun Feb 01 08:00:00 CST 1970
1550579700808
1550579700808
Thu Jan 01 10:00:00 CST 1970
Thu Jan 01 10:00:00 CST 1970
Dateformat
格式化(Date -> String)
String format(Date date) 将一個 Date 格式化為日期/時間字元串
解析(String -> Date)
Date parse(String source)從給定字元串的開始解析文本,以生成一個日期Date
構造方法
SimpleDateFormat()用預設的模式和預設語言環境的日期格式符号構造 SimpleDateFormat
SimpleDateFormat(String pattern) 用給定的模式和預設語言環境的日期格式符号構造 SimpleDateFormat
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DateFormatDemo {
public static void main(String[] args) throws ParseException {
method_01();
method_02();
method_03();
}
//日期的解析
public static void method_03() throws ParseException {
// 鍵盤錄入使用者的生日
Scanner sc = new Scanner(System.in);
System.out.println("請輸入您的生日,格式為:1900-01-01");
String line = sc.nextLine();
// 建立日期格式化器
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 解析
Date birthday = sdf.parse(line);
System.out.println(birthday);// Tue Sep 17 00:00:00 CST 1996
}
// 自定義模式格式化
public static void method_02() {
// SimpleDateFormat(String pattern) 用給定的模式和預設語言環境的日期格式符号構造 SimpleDateFormat
// 建立日期格式化器
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日,E HH:mm:ss");
// 建立日期對象
Date date = new Date();
// 格式化
String str = sdf.format(date);
System.out.println(str);// 2016年12月04日,星期日 10:38:40
}
//預設模式格式化
public static void method_01() {
// SimpleDateFormat()用預設的模式和預設語言環境的日期格式符号構造 SimpleDateFormat。
// 建立日期格式化器
SimpleDateFormat sdf = new SimpleDateFormat();
// 建立日期
Date date = new Date();
// 格式化
String str = sdf.format(date);
System.out.println(str);// 16-12-4 上午10:29
}
}
運作結果:
19-2-19 下午8:47
2019年02月19日,星期二 20:47:54
請輸入您的生日,格式為:1900-01-01
1996-03-13
Wed Mar 13 00:00:00 CST 1996
Calendar(月曆)
擷取Calendar對象:
Calendar.getInstance()
擷取月曆的字段
int get(int field)
修改字段
set(int field , int value)
set(int year, int month, int day)
add(int field, int amount)
注意事項:
Calendar 的 month 從 0 開始,也就是全年 12 個月由 0 ~ 11 進行表示。
而 Calendar.DAY_OF_WEEK 定義和值如下:
Calendar.SUNDAY = 1
Calendar.MONDAY = 2
Calendar.TUESDAY = 3
Calendar.WEDNESDAY = 4
Calendar.THURSDAY = 5
Calendar.FRIDAY = 6
Calendar.SATURDAY = 7
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
// 擷取年
int year = c.get(Calendar.YEAR);
// 擷取月
int month = c.get(Calendar.MONTH)+1;
// 擷取日
int date = 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+"月"+date+"日"+hour+"時"+minute+"分"+second+"秒");
}
}
運作結果:
現在是2019年2月19日20時59分43秒
應用執行個體
import java.util.Calendar;
import java.util.Scanner;
/*
* 計算任意一個年的2月份有幾天
* 需求:使用者任意輸入一年,我們判斷2月有幾天
* 方式1:判斷是否是閏年,如果是,那就29天。否則28天
* 方式2:我們把月曆調整到使用者指定年的3月1日,然後把天字段-1.擷取此時的天字段
* 思路:
* A:建立鍵盤錄入對象
* B:錄入使用者輸入的年
* C:建立月曆字段
* D:把月曆設定到指定年的3月1日
* E:把月曆的天字段-1
* F:擷取天字段的值,一定是2月的最後一天
*/
public class CalendarDemo03 {
public static void main(String[] args) {
// A:建立鍵盤錄入對象
Scanner sc = new Scanner(System.in);
// B:錄入使用者輸入的年
System.out.println("請輸入任意的年:比如1990");
String line = sc.nextLine();
int year = Integer.parseInt(line);
// C:建立月曆字段
Calendar c = Calendar.getInstance();
// D:把月曆設定到指定年的3月1日
c.set(year, 2, 1);
// E:把月曆的天字段-1
c.add(Calendar.DAY_OF_MONTH, -1);
// F:擷取天字段的值,一定是2月的最後一天
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年的2月分共有" + day + "天");
sc.close();
}
}