java.util
DateCalendarjava.time(jdk>=1.8)
LocalDateLocalTimeZonedDateTimeInstant新API的特点:
严格区分日期,时间不变类(类似于String)Month范围1-12(Jan-Dec)Week范围1-7(Mon-Sun)注意: import java.util而不是importjava.sql
结果:
Wed Jun 05 14:03:26 CST 2019 Wed Jun 05 14:03:26 CST 2019 1559714606831java.util.Date的问题:
不能转换时区日期和时间的加减两个日期相差多少天计算某个月第一个星期一yyyy: 年
MM: 月
dd: 日
HH: 时
mm: 分
ss: 秒
Date now = new Date(); // 把Date按照格式转换成字符串 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(now)); // 把字符串按照格式转换成Date对象 String s1 = "2016-11-20 12:15:35"; Date date1 = sdf.parse(s1); System.out.println(date1);导入: import java.util.Calendar
// 创建实例 Calendar c = Calendar.getInstance(); int y = c.get(Calendar.YEAR); int m = c.get(Calendar.MONTH);// 得到的月份比实际月份小1 int d = c.get(Calendar.DAY_OF_MONTH); int w = c.get(Calendar.DAY_OF_WEEK); int hh = c.get(Calendar.HOUR_OF_DAY); int mm = c.get(Calendar.MINUTE); int ss = c.get(Calendar.SECOND); int ms = c.get(Calendar.MILLISECOND); Date date = c.getTime(); // 获得时间戳 long ms1 = c.getTimeInMillis(); Date c.getTime() 获得Date对象long getTimelnMillis() 获得毫秒数get(int field) 获得年月日, 时分秒setTime(Date) 设定时间setTimeInMillis(long) 根据时间戳设置时间set(int field, int value) 根据年月日等设定时间setTimeZone(TimeZone) 更改时区c.setTimeZone(TimeZone.getTimeZone("America/New_York"))
add(int field, int value) // +5 day c.add(Calendar.DAY_OF_MONTH, 5); // -2 hours c.add(Calendar.HOUR_OF_DAY, -2);增加:
plusYears(1): +1年plusMonths(1): +1月plusDays(1): +1天plusHours(1): +1小时plusMinutes(1): +1 分钟plusSeconds(1): +1 秒减少
minusYears(1): +1年minusMonths(1): +1月minusDays(1): +1天minusHours(1): +1小时minusMinutes(1): +1 分钟minusSeconds(1): +1 秒 LocalDateTime now = LocalDateTime.now(); LocalDateTime d = now.plusDays(1).minusHours(1);调整年, 月,日, 时, 分, 秒
withYear(2018): 调整年withMonth(): 调整月withDayOfMonth(): 调整为本月的第几天withDayOfYear(): 调整本年的第几天withHour(): 调整小时withMinute(): 调整分钟withSecond(): 调整秒判断日期和时间的先后:
isBefore()isAfter()equals()计算两个日期的相差时间:Period
LocalDate d1 = LocalDate.of(2018, 11, 20); LocalDate d2 = LocalDate.of(2050, 1, 2); Period p = d1.until(d2); System.out.println(p);// P31Y1M13D // 两个日期相差多少天 System.out.println(Math.abs(d1.toEpochDay() - d2.toEpochDay()));// 11366 p.getYears()p.getMonths()p.getDays()ZonedDateTime = LocalDateTime + ZoneId
ZonedDateTime: 带时区的日期和时间ZoneId: 新时区对象(取代就的java.util.TimeZone)Instant: 时刻对象(内部用long表示epoch seconds) ZonedDateTime zbj = ZonedDateTime.now();// 当前时区的日期和时间 ZonedDateTime zny = ZonedDateTime.now(ZoneId.of("America/New_York"));// 纽约时区的日期和时间 // 北京时区变成纽约时区 ZonedDateTime ny = zbj.withZoneSameInstant(ZoneId.of("America/New_York")); // 把LocalDateTime转换成ZonedDateTime ZonedDateTime bj = LocalDateTime.now().atZone(ZoneId.systemDefault());Instant: 对象表示某个时刻
Instant ins1 = Instant.now(); Instant ins2 = ZonedDateTime.now().toInstant(); // 注意是秒 long epoch = ins1.getEpochSecond();转载于:https://www.cnblogs.com/lingshang/p/10980288.html