在 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