日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java常用类(2)--日期时间相关类Date、Calendar、LocalDateTime、Instant全面

發布時間:2023/12/2 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java常用类(2)--日期时间相关类Date、Calendar、LocalDateTime、Instant全面 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • java.lang.System類
    • java.util.Date類
    • java.sql.Date類
    • java.text.SimpleDateFormat類
    • java.util.Calendar(日歷)類
    • java.time類
    • java.time.Instant類
    • java.time.format.DateTimeFormatter 類
    • 其它API



java.lang.System類

System類提供的public static long currentTimeMillis()用來返回當前時間與1970年1月1日0時0分0秒之間以毫秒為單位的時間差(時間戳)。(此方法適于計算時間差)

long time = System.currentTimeMillis(); System.out.println(time);

java.util.Date類

構造器:
①Date():創建的對象可以獲取本地當前時間
②Date(long date):創建指定毫秒數的Date對象,相當于又將時間戳轉換成String形式

常用方法
①getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數。
②toString():把此 Date 對象轉換為以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是時間標準。

import java.util.Date;public class DataTest {public static void main(String[] args) {Date date = new Date();System.out.println(date.toString());System.out.println(date); //等同于toString()方法System.out.println(date.getTime());} }

java.sql.Date類

是java.util.Date類的子類,對應著數據庫中的日期類型的變量。

構造器:java.sql.Date(時間戳)

常用方法:同上

java.sql.Date與java.util.Date轉換,可以通過多態和getTime()方法

import java.util.Date;public class DataTest {public static void main(String[] args) {Date date = new Date();java.sql.Date sqlDate = new java.sql.Date(date.getTime());System.out.println(sqlDate);} }

java.text.SimpleDateFormat類

Date類的API不易于國際化,大部分被廢棄了,java.text.SimpleDateFormat類是一個不與語言環境有關的方式來格式化和解析日期的具體類。其允許進行①格式化:日期—>字符串、②解析:字符串—>日期。

格式化:
1.實例化
①SimpleDateFormat() :默認的模式和語言環境創建對象
②SimpleDateFormat(String pattern):該構造方法可以用參數pattern指定的格式創建一個對象
2.格式化
實例化對象調用 String format(Date date)方法格式化時間對象

import java.text.SimpleDateFormat; import java.util.Date;public class SimpleTest {public static void main(String[] args) {SimpleDateFormat sdf = new SimpleDateFormat(); //無參默認模式實例化Date date = new Date(); String format = sdf.format(date); //格式化System.out.println(format);} }

import java.text.SimpleDateFormat; import java.util.Date;public class SimpleTest {public static void main(String[] args) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); //帶參指定格式實例化Date date = new Date();String format = sdf.format(date); //格式化System.out.println(format);} }


關于指定格式:


解析(格式化逆過程):
Date parse(String source):依據格式解析字符串,以生成一個日期(注意格式的匹配對應,否則拋異常)

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class SimpleTest {public static void main(String[] args) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); //帶參指定格式實例化Date parse = sdf.parse("2020-12-20 22:03:19");System.out.println(parse);} }



java.util.Calendar(日歷)類

這是一個抽象(abstract)類,主用用于完成日期字段之間相互操作的功能。

實例化:
①使用Calendar.getInstance()該靜態方法
②調用它的子類GregorianCalendar的構造器

常用方法:

import java.util.Calendar; import java.util.Date;public class CalendarTest {public static void main(String[] args) {Calendar instance = Calendar.getInstance();//get():int get(int field)int ofMouth = instance.get(Calendar.DAY_OF_MONTH);System.out.println(ofMouth);int ofYear = instance.get(Calendar.DAY_OF_YEAR);System.out.println(ofYear);//set():void set(int field,int value)instance.set(Calendar.DAY_OF_MONTH,9);System.out.println(instance.get(Calendar.DAY_OF_MONTH));//add:void add(int field,int amount)instance.add(Calendar.DAY_OF_MONTH,-2);System.out.println(instance.get(Calendar.DAY_OF_MONTH));//getTime:final Date getTime() 將日歷類型轉換為Date類型Date time = instance.getTime();System.out.println(time);//setTime:final void setTime(Date date) 將Date類型轉換為日歷類型instance.setTime(new Date());System.out.println("********" + instance.getTime());} }


一個Calendar的實例是系統時間的抽象表示,通過get(int field)方法來取得想要的時間信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND。



java.time類

LocalDate、LocalTime、LocalDateTime 類是其中較重要的幾個子類,它們的實例
是不可變的對象,分別表示使用 ISO-8601日歷系統的日期、時間、日期和時間。

實例化:

import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime;public class TimeTest {public static void main(String[] args) {//now() 獲取當前日期,時間,日期+時間LocalDate now1 = LocalDate.now();LocalTime now2 = LocalTime.now();LocalDateTime now3 = LocalDateTime.now();System.out.println(now1);System.out.println(now2);System.out.println(now3);//of() 設置指定的年月日時分秒,沒有偏移量LocalDateTime of = LocalDateTime.of(2021, 9, 9, 15, 36, 40);System.out.println(of);} }

其他常用方法:

import java.time.LocalDateTime;public class TimeTest {public static void main(String[] args) {LocalDateTime now = LocalDateTime.now();//getXxx() 獲取相關的屬性System.out.println(now.getDayOfWeek());System.out.println(now.getMonth());System.out.println(now.getMonthValue()); //......//withXxx() 設置相關的屬性,不可變性LocalDateTime nowWith = now.withDayOfMonth(8);System.out.println(nowWith);System.out.println(now);//plusXxx() 加,不可變性LocalDateTime pl = now.plusMonths(2);System.out.println(pl);//minusXxx() 減,不可變性LocalDateTime mi = now.minusDays(8);System.out.println(mi);} }



java.time.Instant類

Instant:時間線上的一個瞬時點。 這可能被用來記錄應用程序中的事件時間
戳。

import java.time.Instant; import java.time.OffsetDateTime; import java.time.ZoneOffset;public class InstantTest {public static void main(String[] args) {//獲取本初子午線當前的標準時間Instant now = Instant.now();System.out.println(now);//結合時區,添加當地時間偏移量OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));System.out.println(offsetDateTime);//返回1970-01-01 00:00:00到當前時間的毫秒數,即為時間戳long l = now.toEpochMilli();System.out.println(l);//返回在1970-01-01 00:00:00基礎上加上指定毫秒數之后的Instant類的對象Instant instant = Instant.ofEpochMilli(l);System.out.println(instant);} }



java.time.format.DateTimeFormatter 類

該類提供了三種格式化方法:
①預定義的標準格式,如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
②本地化相關的格式,如:ofLocalizedDateTime(FormatStyle.LONG)
③自定義的格式,如:ofPattern(“yyyy-MM-dd hh:mm:ss”)

import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.time.temporal.TemporalAccessor;public class FormatterTest {public static void main(String[] args) {//方式一:預定義的標準格式DateTimeFormatter isoDateTime = DateTimeFormatter.ISO_LOCAL_DATE_TIME;//格式化String format1 = isoDateTime.format(LocalDateTime.now());System.out.println(format1);//解析TemporalAccessor parse1 = isoDateTime.parse(format1);System.out.println(parse1);//方式二:本地化相關的格式DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);//格式化String format2 = dateTimeFormatter.format(LocalDateTime.now());System.out.println(format2);//解析TemporalAccessor parse2 = dateTimeFormatter.parse(format2);System.out.println(parse2);//方式三:自定義格式DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");//格式化String format3 = dateTimeFormatter3.format(LocalDateTime.now());System.out.println(format3);//解析TemporalAccessor parse3 = dateTimeFormatter3.parse(format3);System.out.println(parse3);} }



其它API

ZoneId:該類中包含了所有的時區信息,一個時區的ID,如 Europe/Paris
ZonedDateTime:一個在ISO-8601日歷系統時區的日期時間,
如 2007-12-03T10:15:30+01:00 Europe/Paris
其中每個時區都對應著ID,地區ID都為“{區域}/{城市}”的格式,例如:
Asia/Shanghai等

Clock:使用時區提供對當前即時、日期和時間的訪問的時鐘
持續時間:Duration,用于計算兩個“時間”間隔
日期間隔:Period,用于計算兩個“日期”間隔

TemporalAdjuster : 時間校正器。有時我們可能需要獲取例如:將日期調整到“下一個工作日”等操作。
TemporalAdjusters : 該類通過靜態方法(firstDayOfXxx()/lastDayOfXxx()/nextXxx())提供了大量的常用TemporalAdjuster 的實現


總結

以上是生活随笔為你收集整理的Java常用类(2)--日期时间相关类Date、Calendar、LocalDateTime、Instant全面的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。