java Date類和DateFormat類
/**
* 測試Date類
* DateFormat抽象類 ?SimpleDateFormat類 用于日期和字符串之間轉(zhuǎn)換
*/
public class TestDate {
? ?public static void main(String[] args) {
? ? ? ?long nowTime = System.currentTimeMillis();
? ? ? ?//返回當(dāng)前時間 單位毫秒 從1970-01-01 0:00開始計算的總毫秒值 在1970以后為正數(shù) 以前為負(fù)數(shù)
? ? ? ?//java.lang.System類靜態(tài)方法
? ? ? ?long max = Long.MAX_VALUE;
? ? ? ?//包裝類Long中存放常量 MAX MIN
? ? ? ?long range = max/(1000L*3600*24*365);
? ? ? ?//1000毫秒 加L轉(zhuǎn)為long類型防止int溢出
? ? ? ?System.out.println(range+"的結(jié)果為292471208");
? ? ? ?//范圍為正負(fù)2.9億年
? ? ? ?Date d1 = new Date();
? ? ? ?System.out.println(d1+"的結(jié)果為Mon Jul 11 20:52:25 CST 2022");
? ? ? ?//無參new Date()返回當(dāng)前時間的Date對象 d1.fastTime存儲當(dāng)前時間System.currentTimeMillis()的long值
? ? ? ?System.out.println(d1.getTime()+"的結(jié)果為1657544258209");
? ? ? ?//.getTime()返回fastTime
? ? ? ?System.out.println(d1.getTime()/(1000L*3600*24*365)+"的結(jié)果為52 即從1970至今(2022)52年");
? ? ? ?Date d2 = new Date(1000L*3600*24*365*52);
? ? ? ?//傳參long 毫秒
? ? ? ?System.out.println(d2+"的結(jié)果為Sun Dec 19 08:00:00 CST 2021 有閏年所以有誤差");
? ? ? ?SimpleDateFormat df = new SimpleDateFormat();
? ? ? ?//format格式化 ()中的參數(shù)為字符串 通過輸入的字符串設(shè)定日期的匹配格式和輸出格式 無參默認(rèn)格式為"yy-MM-dd 上/下午hh:mm" DateFormat為抽象類 可以用做引用類型 構(gòu)造器需要用SimpleDateFormat()
? ? ? ?System.out.println(df.format(d1)+"的結(jié)果為22-7-11 下午9:38");
? ? ? ?//yy22 MM7 dd11 下午 hh9 :mm38 ?.format()將Date對象轉(zhuǎn)換為字符串String 按照df設(shè)定好的格式
? ? ? ?try {
? ? ? ? ? ?System.out.println(df.parse("90-12-20 上午11:30"));
? ? ? ? ? ?//parse解析操作要求處理ParseException try/catch和throws二選一
? ? ? ? ? ?//結(jié)果為Thu Dec 20 11:30:00 CST 1990
? ? ? ? ? ?//.parse()將符合設(shè)定格式的字符串轉(zhuǎn)換為Date對象 print的結(jié)果為Date對象.toString 所以格式和設(shè)定的格式不同
? ? ? ? ? ?//這里90轉(zhuǎn)換為1990
? ? ? ?} catch (ParseException e) {
? ? ? ? ? ?throw new RuntimeException(e);
? ? ? ?}
? ? ? ?DateFormat df2 = new SimpleDateFormat("年份:yyyy 月份大寫的:MM 日:dd 小時0-23:HH 分鐘:mm 秒:ss 年里的第幾周:w 年里的第幾天:D 星期幾大寫的:EEE三個字符就顯示單詞的前三位");
? ? ? ?try {
? ? ? ? ? ?Date d4 = df2.parse("年份:2022 月份大寫的:07 日:11 小時0-23:22 分鐘:04 秒:25 年里的第幾周:29 年里的第幾天:192 星期幾大寫的:星期一三個字符就顯示單詞的前三位"/*中文環(huán)境下顯示為漢字星期幾*/);
? ? ? ? ? ?System.out.println(d4+"的結(jié)果為Mon Jul 11 22:04:25 CST 2022");
? ? ? ? ? ?//格式中的EEE在中文環(huán)境下變成了 星期幾 格式中的字母是固定含義的 比如年份只能用y表示 不同在于 yy代表末尾兩位數(shù) yyyy代表四位年份 但第幾周的w一個就對應(yīng)了29 第幾天的D一個就對應(yīng)了192
? ? ? ?} catch (ParseException e) {
? ? ? ? ? ?throw new RuntimeException(e);
? ? ? ?}
? ?}
}