JAVA時(shí)間

Date類(lèi)

java.util提供了Date類(lèi)來(lái)封裝日期和時(shí)間。

Date();--當(dāng)前時(shí)間
Date(long millisec);--距離格林威治時(shí)間1970年1月1日millisec毫秒的時(shí)間
new Date().getTime() 時(shí)間戳
System.currentTimeMillis() 取得系統(tǒng)當(dāng)前時(shí)間秒數(shù)

/**
     SimpleDateFormat函數(shù)語(yǔ)法:
     G 年代標(biāo)志符
     y 年
     M 月
     d 日
     h 時(shí) 在上午或下午 (1~12)
     H 時(shí) 在一天中 (0~23)
     m 分
     s 秒
     S 毫秒
     E 星期
     D 一年中的第幾天
     F 一月中第幾個(gè)星期幾
     w 一年中第幾個(gè)星期
     W 一月中第幾個(gè)星期
     a 上午 / 下午 標(biāo)記符
     k 時(shí) 在一天中 (1~24)
     K 時(shí) 在上午或下午 (0~11)
     z 時(shí)區(qū)
     */
      Date now = new Date( );
      SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
      // Current Date: 星期六 2018.11.10 at 12:28:40 上午 CST
      System.out.println("Current Date: " + ft.format(now));
      String time = "星期六 2018.11.10 at 12:28:40 上午 CST";
      Date date = ft.parse(time);
      // Sat Nov 10 00:28:40 CST 2018
      System.out.println(date);
      // 取得系統(tǒng)當(dāng)前時(shí)間秒數(shù)
      System.out.println(System.currentTimeMillis());

Calendar類(lèi)

  • Set設(shè)置
    Calendar c1 = Calendar.getInstance();
    調(diào)用:
    public final void set(int year,int month,int date)
    c1.set(2009, 6 - 1, 12);//把Calendar對(duì)象c1的年月日分別設(shè)這為:2009、6、12
    利用字段類(lèi)型設(shè)置
    如果只設(shè)定某個(gè)字段,例如日期的值,則可以使用如下set方法:
    public void set(int field,int value)
    把 c1對(duì)象代表的日期設(shè)置為10號(hào),其它所有的數(shù)值會(huì)被重新計(jì)算
    c1.set(Calendar.DATE,10);
    把c1對(duì)象代表的年份設(shè)置為2008年,其他的所有數(shù)值會(huì)被重新計(jì)算
    c1.set(Calendar.YEAR,2008);
    其他字段屬性set的意義以此類(lèi)推

  • Add設(shè)置
    Calendar c1 = Calendar.getInstance();
    把c1對(duì)象的日期加上10,也就是c1也就表示為10天后的日期,其它所有的數(shù)值會(huì)被重新計(jì)算
    c1.add(Calendar.DATE, 10);
    把c1對(duì)象的日期減去10,也就是c1也就表示為10天前的日期,其它所有的數(shù)值會(huì)被重新計(jì)算
    c1.add(Calendar.DATE, -10);

  • Calendar類(lèi)對(duì)象信息的獲得
    Calendar c1 = Calendar.getInstance();
    // 獲得年份
    int year = c1.get(Calendar.YEAR);
    // 獲得月份
    int month = c1.get(Calendar.MONTH) + 1;
    // 獲得日期
    int date = c1.get(Calendar.DATE);
    // 獲得小時(shí)
    int hour = c1.get(Calendar.HOUR_OF_DAY);
    // 獲得分鐘
    int minute = c1.get(Calendar.MINUTE);
    // 獲得秒
    int second = c1.get(Calendar.SECOND);
    // 獲得星期幾(注意(這個(gè)與Date類(lèi)是不同的):1代表星期日、2代表星期1、3代表星期二,以此類(lèi)推)
    int day = c1.get(Calendar.DAY_OF_WEEK);

Instant類(lèi)

所謂的 Instant 類(lèi)代表的是某個(gè)時(shí)間(有點(diǎn)像 java.util.Date),它是精確到納秒的(而不是象舊版本的Date精確到毫秒)。如果使用納秒去表示一個(gè)時(shí)間則原來(lái)使用一位Long類(lèi)型是不夠的,需要占用更多一點(diǎn)的存儲(chǔ)空間,實(shí)際上其內(nèi)部是由兩個(gè)Long字段組成,第一個(gè)部分保存的是自標(biāo)準(zhǔn)Java計(jì)算時(shí)代(就是1970年1月1日開(kāi)始)到現(xiàn)在的秒數(shù),第二部分保存的是納秒數(shù)(永遠(yuǎn)不會(huì)超過(guò)999,999,999)。

Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));
System.out.println("秒數(shù):"+now.getEpochSecond());
System.out.println("毫秒數(shù):"+now.toEpochMilli());
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容