時間戳和LocalDateTime和Date互轉(zhuǎn)和格式化

時間戳與LocalDateTime互轉(zhuǎn)

2.1 LocalDateTime 轉(zhuǎn) 時間戳

方式一

這邊值得一提的是在中國的時區(qū)偏移是8小時描验,本次示例轉(zhuǎn)的時間戳是秒級別白嘁,得到的值是一個long值;知識追尋者這邊是當(dāng)前時間膘流,故讀者得到的結(jié)果與知識追尋者得到的結(jié)果不一致絮缅;讀者可以使用站長工具進(jìn)行測試校驗(yàn)

https://unixtime.51240.com/

    @Test
    public void localTimeTest1(){
        // 獲得當(dāng)前時間
        LocalDateTime localDateTime = LocalDateTime.now();
        // 將當(dāng)前時間轉(zhuǎn)為時間戳
        long second = localDateTime.toEpochSecond(ZoneOffset.ofHours(8));
        // 1580706475
        System.out.println(second);

    }

方式二

此方法執(zhí)行的結(jié)果與之前一致,也是秒級別

    @Test
    public void localTimeTest2(){
        // 獲得當(dāng)前時間
        LocalDateTime localDateTime = LocalDateTime.now();
        // 將當(dāng)前時間轉(zhuǎn)為時間戳
        long second = localDateTime.toInstant(ZoneOffset.ofHours(8)).getEpochSecond();
        // 1580707001
        System.out.println(second);

    }

方式三

此方式轉(zhuǎn)的將是毫秒級別睡扬,直接用于站長工具是測試不出來盟蚣,讀者應(yīng)該將其除1000取商獲得正確的秒級時間戳;

    @Test
    public void localTimeTest3(){
        // 獲得當(dāng)前時間
        LocalDateTime localDateTime = LocalDateTime.now();
        // 將當(dāng)前時間轉(zhuǎn)為時間戳
        long milliseconds =                              localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
        // 1580707268
        System.out.println(milliseconds/1000);

    }

2.2 時間戳 轉(zhuǎn)LocalDateTime

以下幾種獲取的LocalDateTime方式按讀者需求進(jìn)行獲取卖怜,不同的精確值屎开,將獲取不同的結(jié)果;

方式一

先獲取時間戳為秒級別马靠,然后通過轉(zhuǎn)換為LocalDateTime

    @Test
    public void localTimeTest4(){
        //獲得時間戳
        long second = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).getEpochSecond();
        // 將時間戳轉(zhuǎn)為當(dāng)前時間
        LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(second, 0, ZoneOffset.ofHours(8));
        // 2020-02-03T13:30:44
        System.out.println(localDateTime);

    }

方式二

本次獲取的時間搓將是毫秒級別故要除以1000

    public void localTimeTest5(){
        //獲得時間戳
        long milliseconds = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
        // 將時間戳轉(zhuǎn)為當(dāng)前時間
        LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(milliseconds/1000, 0, ZoneOffset.ofHours(8));
        // 2020-02-03T13:35:53
        System.out.println(localDateTime);

    }

方式三

本方式精確值是毫秒級別奄抽,故得到的結(jié)果會存在三位小數(shù)點(diǎn)蔼两;

    @Test
    public void localTimeTest6(){
        //獲得時間戳
        long milliseconds = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
        // 將時間戳轉(zhuǎn)為當(dāng)前時間
        LocalDateTime localDateTime = Instant.ofEpochMilli(milliseconds).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
        // 2020-02-03T13:38:35.799
        System.out.println(localDateTime);

    }

三 時間戳與LocalDate互轉(zhuǎn)

學(xué)會時間戳與LocalDate互轉(zhuǎn),同理就可以推出時間戳與LocalTime 互轉(zhuǎn)逞度,不過知識追尋者相信幾乎沒人會用到這個额划,故這邊就不做示例;

3.1 時間戳轉(zhuǎn)LocalDate

方式一

注意這邊是毫秒級的時間戳;

  @Test
    public void localDateTest1(){
        //獲得時間戳
        long milliseconds = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
        // 將時間戳轉(zhuǎn)為當(dāng)前時間
        LocalDate localDate = Instant.ofEpochMilli(milliseconds).atZone(ZoneOffset.ofHours(8)).toLocalDate();
        // 2020-02-03
        System.out.println(localDate);

    }

方式二

注意這邊是秒級時間戳

    @Test
    public void localDateTest2(){
        //獲得時間戳
        long seconds = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).getEpochSecond();
        // 將時間戳轉(zhuǎn)為當(dāng)前時間
        LocalDate localDate = Instant.ofEpochSecond(seconds).atZone(ZoneOffset.ofHours(8)).toLocalDate();
        // 2020-02-03
        System.out.println(localDate);

    }

3.2 LocalDate 轉(zhuǎn) 時間戳

方式一

注意妙計(jì)時間戳

    @Test
    public void localDateTest3(){
        LocalDate localDate = LocalDate.now();
        //獲得時間戳
        long seconds = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant().getEpochSecond();
        // 1580659200
        System.out.println(seconds);

    }

方式二

注意毫秒級時間戳

    @Test
    public void localDateTest4(){
        LocalDate localDate = LocalDate.now();
        //獲得時間戳
        long seconds = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant().toEpochMilli();
        // 1580659200000
        System.out.println(seconds);

    }

四 LocalDateTime與Date互轉(zhuǎn)

4.1 Date轉(zhuǎn)LocalDateTime

注意避坑,如下代碼汉柒,執(zhí)行完畢杨何,可以看出會有時間誤差8小時的區(qū)別
  public static void main(String[] args) throws ParseException {
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String zhi="2022-11-02 00:00:00";
        Date date=dateFormat.parse(zhi);
        System.out.println(date);
        LocalDateTime dateTime=LocalDateTime.ofInstant(date.toInstant(), ZoneOffset.UTC);
        System.out.println("一個"+dateTime);
        LocalDateTime dateTime1=Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.of("UTC")).toLocalDateTime();
        System.out.println("這個"+dateTime1);
        LocalDateTime dateTime2=date.toInstant().atOffset(ZoneOffset.ofHours(8)).toLocalDateTime();
        System.out.println("又是"+dateTime2);
    }
輸出結(jié)果:
Wed Nov 02 00:00:00 CST 2022
一個2022-11-01T16:00
這個2022-11-01T16:00
又是2022-11-02T00:00

方式一

得出結(jié)果是有小數(shù)點(diǎn)忧勿,毫秒級精確

    @Test
    public void DateTest1(){
        // 創(chuàng)建時間
        Date date = new Date();
        // 將時間轉(zhuǎn)為 LocalDateTime
        LocalDateTime localDateTime = date.toInstant().atOffset(ZoneOffset.ofHours(8)).toLocalDateTime();
        // 2020-02-03T14:07:49.833
        System.out.println(localDateTime);

    }

方式二

秒級精確;

    @Test
    public void DateTest2(){
        // 創(chuàng)建時間
        Date date = new Date();
        // 將時間轉(zhuǎn)為 秒級時間戳
        long second = date.toInstant().atOffset(ZoneOffset.ofHours(8)).toEpochSecond();
        LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(second, 0, ZoneOffset.ofHours(8));
        // 2020-02-03T14:11:39
        System.out.println(localDateTime);

    }

4.2 LocalDateTime 轉(zhuǎn) Date

方式一

秒級

    @Test
    public void DateTest3(){
        //當(dāng)前時間
        LocalDateTime localDateTime = LocalDateTime.now();
        // 獲得 Instant
        Instant instant = Instant.ofEpochSecond(localDateTime.toEpochSecond(ZoneOffset.ofHours(8)));
        // 獲得 Date
        Date date = Date.from(instant);
        // Mon Feb 03 14:16:27 CST 2020
        System.out.println(date);

    }

方式二

    @Test
    public void DateTest4(){
        //當(dāng)前時間
        LocalDateTime localDateTime = LocalDateTime.now();
        // 獲得 Instant
        Instant instant = localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant();
        // 獲得 Date
        Date date = Date.from(instant);
        // Mon Feb 03 14:20:32 CST 2020
        System.out.println(date);

    }

五 LocalDate與Date互轉(zhuǎn)

5.1 LocalDate 轉(zhuǎn) Date

    @Test
    public void DateTest5(){
        //當(dāng)前時間
        LocalDate localDate = LocalDate.now();
        // 獲得 Instant
        Instant instant = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant();
        // 獲得 Date
        Date date = Date.from(instant);
        // Mon Feb 03 00:00:00 CST 2020
        System.out.println(date);

    }

5.2 Date 轉(zhuǎn)LocalDate

    @Test
    public void DateTest6(){
        // 獲得 date
        Date date = new Date();
        // 獲得  LocalDate
        LocalDate localDate = date.toInstant().atOffset(ZoneOffset.ofHours(8)).toLocalDate();
        // 2020-02-03
        System.out.println(localDate);
    }

六 LocalDateTime格式化

最后再說下格式化;知識追尋者這邊就不提 LocalDateTime, LocalDate , LocalTime 互轉(zhuǎn)問題阿逃,原因是前言那篇文章已經(jīng)提到過;

6.1 LocalDateTime 轉(zhuǎn)字符串

   @Test
    public void format1(){
        // 獲得 localDateTime
        LocalDateTime localDateTime = LocalDateTime.now();
        // 指定模式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH/mm/ss");
        // 將 LocalDateTime 格式化為字符串
        String format = localDateTime.format(dateTimeFormatter);
        // 2020/02/03 14/38/54
        System.out.println(format);
    }

6.2 字符串 轉(zhuǎn)LocalDateTime

    @Test
    public void format2(){
        String time = "2020/02/03 14/38/54";
        // 指定模式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH/mm/ss");
        // 將字符串格式化為 LocalDateTime
        LocalDateTime localDateTime = LocalDateTime.parse(time, dateTimeFormatter);
        // 2020-02-03T14:38:54
        System.out.println(localDateTime);
    }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赃蛛,一起剝皮案震驚了整個濱河市恃锉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呕臂,老刑警劉巖破托,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異歧蒋,居然都是意外死亡炼团,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門疏尿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人易桃,你說我怎么就攤上這事褥琐。” “怎么了晤郑?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵敌呈,是天一觀的道長。 經(jīng)常有香客問我造寝,道長磕洪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任诫龙,我火速辦了婚禮析显,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘签赃。我一直安慰自己谷异,他們只是感情好分尸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著歹嘹,像睡著了一般箩绍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尺上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天材蛛,我揣著相機(jī)與錄音,去河邊找鬼怎抛。 笑死卑吭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抽诉。 我是一名探鬼主播陨簇,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼迹淌!你這毒婦竟也來了河绽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤唉窃,失蹤者是張志新(化名)和其女友劉穎耙饰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纹份,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苟跪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔓涧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片件已。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖元暴,靈堂內(nèi)的尸體忽然破棺而出篷扩,到底是詐尸還是另有隱情,我是刑警寧澤茉盏,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布鉴未,位于F島的核電站,受9級特大地震影響鸠姨,放射性物質(zhì)發(fā)生泄漏铜秆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一讶迁、第九天 我趴在偏房一處隱蔽的房頂上張望连茧。 院中可真熱鬧,春花似錦、人聲如沸梅屉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坯汤。三九已至虐唠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惰聂,已是汗流浹背疆偿。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搓幌,地道東北人杆故。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像溉愁,于是被迫代替她去往敵國和親处铛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容