天天看點

JAVA基礎-日期相關類Date類DateformatCalendar(月曆)應用執行個體

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();
	}
}