格林威治 -英国的天文台 地球经度起点 世界时区起点
格林威治时间 1点 =北京时间 8点
时间戳=格林威治时间 1970-01-01 00:00:00 起到现在的总秒数
获取当前时间与时间戳
Date date = new Date();
System.out.println(date); Sun Mar 01 16:12:20 CST 2020
System.out.println(date.getTime()); 1583050340393
System.out.println(System.currentTimeMillis()); 1583050340432
public Date() {
this(System.currentTimeMillis());
}
public static native long currentTimeMillis();
Calendar calendar=Calendar.getInstance();
Date time=calendar.getTime();
System.out.println(time); Sun Mar 01 16:12:20 CST 2020
System.out.println(time.getTime()); 1583050340433
LocalDateTime(时间日期) LocalDate(日期) LocalTime(时间)
LocalDateTime localDateTime=LocalDateTime.now();
System.out.println(localDateTime); 2020-03-01 T 16:53:47.507
long milli = Instant.now().toEpochMilli();
System.out.println(milli);1583053267617 毫秒
long second = Instant.now().getEpochSecond();
System.out.println(second);1583053267 秒
时间格式化
M-月,D-年中天数,E-星期,H-24小时制,Z-时区,其他小写单词首字母
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s=simpleDateFormat.format(new Date());
System.out.println(s); 2020-03-01 16:19:02
System.out.println(new SimpleDateFormat("E").format(new Date())); Sun
System.out.println(new SimpleDateFormat("Z").format(new Date())); +0800
SimpleDateFormat 非线程安全的 借助了calender
calendar.setTime(date);
DateTimeFormatter 是线程安全的
DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String format = dateTimeFormatter.format(LocalDateTime.now());
System.out.println(format);2020-03-01 17:13:10
String format1 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(format1);2020-03-01 17:17:39
时间转换
String日期->date
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s="2020-2-2 13:23:21";
System.out.println(simpleDateFormat.parse(s));Sun Feb 02 13:23:21 CST 2020
String s="2020-02-02 13:23:21";
LocalDateTime localDateTime=LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(localDateTime); 2020-02-02T13:23:21
String时间戳->date
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s1="1583050340393";
Timestamp timestamp=new Timestamp(Long.parseLong(s1));
System.out.println(simpleDateFormat.format(timestamp)); 2020-03-01 16:12:20
获取昨天此刻时间
Calendar calendar=Calendar.getInstance();
calendar.add(Calendar.DATE,-1);
System.out.println(calendar.getTime());Sat Feb 29 16:49:21 CST 2020
LocalDateTime localDateTime=LocalDateTime.now().plusDays(-1);
System.out.println(localDateTime); 2020-02-29T17:24:47.734
获取本月最后一天
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(calendar.getTime()); Tue Mar 31 17:38:27 CST 2020
LocalDateTime localDateTime=LocalDateTime.now().with(TemporalAdjusters.lastDayOfMonth());
System.out.println(localDateTime); 2020-03-31T17:41:35.598
获取两个时间的日期间隔
LocalDate localDate=LocalDate.now();
LocalDate localDate1=localDate.plusDays(2);
Period period=Period.between(localDate, localDate1);
System.out.println(period.getDays()); 2
获取两个时间的间隔
LocalTime localTime=LocalTime.now();
LocalTime localTime1=localTime.plusSeconds(30);
Duration duration=Duration.between(localTime, localTime1);
System.out.println(duration.getSeconds()); 30
Date比较两个时间大小
- 换成时间戳相减
- Date 里的方法