如何將Java 8 Calendar轉換為 LocalDateTime?

banq發表於2022-09-18

在 Java 8 中將 Calendar 物件轉換為 LocalDateTime 的快速示例。而LocalDateTime.ofInstant() 用於將 Calendar 轉換為 LocalDateTime 物件。
LocalDateTime api 可以完全替代 Date 類,因為 Date 函式的所有功能都以簡單而精確的方式完成。

要將 Calendar 轉換為 LocalDateTime,您需要執行以下步驟。
步驟1:
首先,使用返回 Calendar 物件的 Calendar.getInstance() 方法建立一個Calendar例項 。
第2步 :
接下來,使用calendar.getTimeZone() 方法從日曆例項中獲取時區。
第 3 步:
現在,使用timezone.toZoneId()方法從 TimeZone 類中 獲取ZoneId物件。
最後, 使用日曆即時和區域 ID 值呼叫LocalDateTime.ofInstant(calendar.toInstant(), zoneId)方法

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.TimeZone;

public class CalenderToLocalDateTimeExample {

    public static void main(String[] args) {

        //Create a calender instance.
        Calendar calendar = Calendar.getInstance();

        System.out.println("Calender instance : "+calendar);

        // Getting the timezone
        TimeZone tz = calendar.getTimeZone();

        // Getting zone id
        ZoneId zoneId = tz.toZoneId();

        // conversion
        LocalDateTime localDateTime = LocalDateTime.ofInstant(calendar.toInstant(), zoneId);

        System.out.println("Local date time object  : "+localDateTime);

    }
}


import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;

public class CalenderToLocalDateExample {

    public static void main(String[] args) {

        Calendar cal = Calendar.getInstance();
        Date input = cal.getTime();
        LocalDate la = input.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

        System.out.println("Calender to LocalDate : "+la);
    }
}


可以在一行中將轉換為 Java 8 中的 LocalDateTime 和 LocalDate。為重用 . 編寫單獨的方法是一種很好的做法:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Calendar;

public class SingleLineCalenderToLocalDateTimeExample {

    public static void main(String[] args) {

        //Create a calender instance.
        Calendar calendar = Calendar.getInstance();


        LocalDateTime singleLineLocalDateTime = getLocalDateTime(calendar);
        LocalDate singleLineLocalDate = getLocalDate(calendar);

        System.out.println("Converted LocalDateTime : "+singleLineLocalDateTime);
        System.out.println("Converted LocalDate : "+singleLineLocalDate);

    }

    private static LocalDateTime getLocalDateTime(Calendar calendar){

        return  LocalDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId());
    }

    private static LocalDate getLocalDate(Calendar calendar){

        return  LocalDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId()).toLocalDate();
    }
}


顯示的程式示例在 GitHub 中。

CalenderToLocalDateExample.java

CalenderToLocalDateTimeExample.java

SingleLineCalenderToLocalDateTimeExample.java

相關文章