按照发展顺序:
(一)Date(jdk1.0就有)
package date_;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) throws ParseException {
//Date
Date date1 = new Date();//默认输出当前的时间
System.out.println(date1);
Date date2 = new Date(9999999);//long是指毫秒数,输出long值对应的日期
System.out.println(date2);
//给Date的表示规定自定义格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
//Date——>给定格式的字符串
String s1 = sdf.format(date1);
System.out.println(s1);
//给定日期的字符串——>Date
String s2 = "2008年08月08日 08:08:08 星期六";
Date date = sdf.parse(s2);
System.out.println(date);
}
}
(二)Calendar
package date_;
import java.util.Calendar;
public class Test2 {
public static void main(String[] args) {
//Canlendar
Calendar c = Calendar.getInstance();//是一个抽象类,不能使用new实例化
System.out.println(c.get(Calendar.YEAR)+"-"+c.get(Calendar.MONTH+1)+"-"+c.get(Calendar.DATE)
+" "+c.get(Calendar.HOUR)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND));
//月份从0开始,要加一!!!
//Calendar没有具体的格式化类,要自己定义,获取对象的某些属性拼接,使用c.get()因为要知道获得哪个calendar对象的属性值
System.out.println(c.get(Calendar.HOUR_OF_DAY));//24小时进制
}
}
(三)LocalDate/LocalTime/LocalDateTime(jdk8有的)
package date_;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Test3 {
public static void main(String[] args) {
//LocalDate(只获取年月日), LocalTime(只获取时分秒), LocalDateTime(获取年月日和时分秒)
LocalDateTime dt = LocalDateTime.now();
System.out.println(dt);
System.out.println("年:"+dt.getYear());
System.out.println("月:"+dt.getMonth());//英文的月份
System.out.println("月:"+dt.getMonthValue());//数字的月份
System.out.println("日:"+dt.getDayOfMonth());
System.out.println(dt.getHour()+":"+dt.getMinute()+":"+dt.getSecond());
//DateTimeFormatter格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
String s = formatter.format(dt);
System.out.println(s);
//对日期进行加和减
LocalDateTime dt1 = dt.plusDays(3);
System.out.println(formatter.format(dt1));
LocalDateTime dt2 = dt.minusHours(100000);
System.out.println(formatter.format(dt2));
}
}
(四)Instant(时间戳,类似于Date)
package date_;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Date;
public class Test4 {
public static void main(String[] args) {
//Instant 时间戳,类似于Date
Instant instant = Instant.now();//获取当前时间戳对象
//Date——>Instant
Date date = Date.from(instant);
System.out.println(date);
//Instant——>Date
Instant instant1 = date.toInstant();
System.out.println(instant1);
//时间数字化
long milli = instant.toEpochMilli();//toEpochMilli:获取对应的毫秒数-->Date.getTime()
System.out.println(milli);
//ofEpochMilli:通过给定的毫秒数,获取Instant实例--->Date(long millis)
Instant instant2 = Instant.ofEpochMilli(1645728380);
System.out.println(instant1);
// 加上时区所差的8个小时
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println("偏移后的日期时间为:" + offsetDateTime);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
System.out.println(formatter.format(instant2));
System.out.println(formatter.format(offsetDateTime));
}
}
转换器:DateTimeFormatter可以转换Instant、LocatDateTime等实现了TemporalAccessor接口的类
public String format(TemporalAccessor temporal)



