1. 关于日期与时间
几个时间概念:
格林威治标准时间(GMT): 正午时间是太阳穿越本初子午线的时间,该时间由于地球自转影响,时间会有误差,它被更精确的UTC时间取代, 但可以理解GMT时间和UTC时间是等价的。
UTC时间(Coordinated Universal Time):协调世界时。格式:2018-06-03T11:22:33.567z。
IOS8601
Java8之前的版本,可以使用JodaTime第三方库来简化时间与日期的运算。到了JDK8版本,建议使用JDK本身的新的时间日期API。
2. Joda Time
Joda Time(http://www.joda.org)是一个开源的第三方库,在Java8之前可以说是一个标准。
示例:
DateTime today = new DateTime();
DateTime tomorrow = today.plusDays(1);
System.out.println(today.toString("yyyy-MM-dd HH:mm:ss"));
System.out.println(tomorrow);
System.out.println("======================");
//计算当前时间3个月之后的最后一天
LocalDate localDate = new LocalDate();
System.out.println(localDate);
LocalDate newLocalDate = localDate.plusMonths(3).dayOfMonth().withMaximumValue();
System.out.println(newLocalDate.toDate());
System.out.println("======================");
//两年前的第3个月的最后一天
DateTime dateTime2 = new DateTime();
DateTime dateTime3 = dateTime2.minusYears(2).monthOfYear().setCopy(3).dayOfMonth().withMaximumValue();
System.out.println(dateTime3.toString("yyyy-MM-dd HH:mm:ss"));
3. Java8 新API
这些类位于java.time包下,在使用上和Joda Time非常类似。
示例:
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
int res = localDate.getDayOfWeek().getValue();
System.out.println(res);
System.out.println(localDate.getDayOfMonth());
System.out.println("-----------------------");
Clock clock= Clock.systemUTC();
System.out.println(clock.getZone());
System.out.println(clock.millis());
新的API目的是为了取代之前的Calenday类是Date类,使得在计算时间日期时代码的可读性更好,编码方式更简单。
类和方法远不止这些,在使用时去查阅就可以了。