????4. java.time.Instant??Instant?????????????????????????????Unix??????????洢?????????????????????????
package com.journaldev.java8.time;
import java.time.Duration;
import java.time.Instant;
public class InstantExample {
public static void main(String[] args) {
//Current timestamp
Instant timestamp = Instant.now();
System.out.println("Current Timestamp = "+timestamp);
//Instant from timestamp
Instant specificTime = Instant.ofEpochMilli(timestamp.toEpochMilli());
System.out.println("Specific Time = "+specificTime);
//Duration example
Duration thirtyDay = Duration.ofDays(30);
System.out.println(thirtyDay);
}
}
????<span style="font-family: Georgia?? 'Times New Roman'?? 'Bitstream Charter'?? Times?? serif; font-size: 13px; line-height: 19px;">???????????????</span>
????Current Timestamp = 2014-04-28T23:20:08.489Z
????Specific Time = 2014-04-28T23:20:08.489Z
????PT720H
????5. ????API???????????Щ??????????????????/???API??????????й?????????磺??/???????????????·???????????????????????????????TemporalAdjuster??????????????????????????????
package com.journaldev.java8.time;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.Period;
import java.time.temporal.TemporalAdjusters;
public class DateAPIUtilities {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
//Get the Year?? check if it's leap year
System.out.println("Year "+today.getYear()+" is Leap Year? "+today.isLeapYear());
//Compare two LocalDate for before and after
System.out.println("Today is before 01/01/2015? "+today.isBefore(LocalDate.of(2015??1??1)));
//Create LocalDateTime from LocalDate
System.out.println("Current Time="+today.atTime(LocalTime.now()));
//plus and minus operations
System.out.println("10 days after today will be "+today.plusDays(10));
System.out.println("3 weeks after today will be "+today.plusWeeks(3));
System.out.println("20 months after today will be "+today.plusMonths(20));
System.out.println("10 days before today will be "+today.minusDays(10));
System.out.println("3 weeks before today will be "+today.minusWeeks(3));
System.out.println("20 months before today will be "+today.minusMonths(20));
//Temporal adjusters for adjusting the dates
System.out.println("First date of this month= "+today.with(TemporalAdjusters.firstDayOfMonth()));
LocalDate lastDayOfYear = today.with(TemporalAdjusters.lastDayOfYear());
System.out.println("Last date of this year= "+lastDayOfYear);
Period period = today.until(lastDayOfYear);
System.out.println("Period Format= "+period);
System.out.println("Months remaining in the year= "+period.getMonths());
}
}
???????????????????
????Year 2014 is Leap Year? false
????Today is before 01/01/2015? true
????Current Time=2014-04-28T16:23:53.154
????10 days after today will be 2014-05-08
????3 weeks after today will be 2014-05-19
????20 months after today will be 2015-12-28
????10 days before today will be 2014-04-18
????3 weeks before today will be 2014-04-07
????20 months before today will be 2012-08-28
????First date of this month= 2014-04-01
????Last date of this year= 2014-12-31
????Period Format= P8M3D
????Months remaining in the year= 8
????6. ?????????????????????????????????????????????????????????????????????Щ??????????????????????????????
package com.journaldev.java8.time;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateParseFormatExample {
public static void main(String[] args) {
//Format examples
LocalDate date = LocalDate.now();
//default format
System.out.println("Default format of LocalDate="+date);
//specific format
System.out.println(date.format(DateTimeFormatter.ofPattern("d::MMM::uuuu")));
System.out.println(date.format(DateTimeFormatter.BASIC_ISO_DATE));
LocalDateTime dateTime = LocalDateTime.now();
//default format
System.out.println("Default format of LocalDateTime="+dateTime);
//specific format
System.out.println(dateTime.format(DateTimeFormatter.ofPattern("d::MMM::uuuu HH::mm::ss")));
System.out.println(dateTime.format(DateTimeFormatter.BASIC_ISO_DATE));
Instant timestamp = Instant.now();
//default format
System.out.println("Default format of Instant="+timestamp);
//Parse examples
LocalDateTime dt = LocalDateTime.parse("27::Apr::2014 21::39::48"??
DateTimeFormatter.ofPattern("d::MMM::uuuu HH::mm::ss"));
System.out.println("Default format after parsing = "+dt);
}
}
????????????????????????????????????
????Default format of LocalDate=2014-04-28
????28::Apr::2014
????20140428
????Default format of LocalDateTime=2014-04-28T16:25:49.341
????28::Apr::2014 16::25::49
????20140428
????Default format of Instant=2014-04-28T23:25:49.342Z
????Default format after parsing = 2014-04-27T21:39:48
????7. ?????????????????????/????????????????е???ó??????????????????????????????????????????????????????????????????????μ??????????????????????????????
package com.journaldev.java8.time;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class DateAPILegacySupport {
public static void main(String[] args) {
//Date to Instant
Instant timestamp = new Date().toInstant();
//Now we can convert Instant to LocalDateTime or other similar classes
LocalDateTime date = LocalDateTime.ofInstant(timestamp??
ZoneId.of(ZoneId.SHORT_IDS.get("PST")));
System.out.println("Date = "+date);
//Calendar to Instant
Instant time = Calendar.getInstance().toInstant();
System.out.println(time);
//TimeZone to ZoneId
ZoneId defaultZone = TimeZone.getDefault().toZoneId();
System.out.println(defaultZone);
//ZonedDateTime from specific Calendar
ZonedDateTime gregorianCalendarDateTime = new GregorianCalendar().toZonedDateTime();
System.out.println(gregorianCalendarDateTime);
//Date API to Legacy classes
Date dt = Date.from(Instant.now());
System.out.println(dt);
TimeZone tz = TimeZone.getTimeZone(defaultZone);
System.out.println(tz);
GregorianCalendar gc = GregorianCalendar.from(gregorianCalendarDateTime);
System.out.println(gc);
}
}
????????????????????????????????????
Date = 2014-04-28T16:28:54.340
2014-04-28T23:28:54.395Z
America/Los_Angeles
2014-04-28T16:28:54.404-07:00[America/Los_Angeles]
Mon Apr 28 16:28:54 PDT 2014
sun.util.calendar.ZoneInfo[id="America/Los_Angeles"??offset=-28800000??dstSavings=3600000??useDaylight=true??transitions=185??lastRule=java.util.SimpleTimeZone[id=America/Los_Angeles??offset=-28800000??dstSavings=3600000??useDaylight=true??startYear=0??startMode=3??startMonth=2??startDay=8??startDayOfWeek=1??startTime=7200000??startTimeMode=0??endMode=3??endMonth=10??endDay=1??endDayOfWeek=1??endTime=7200000??endTimeMode=0]]
java.util.GregorianCalendar[time=1398727734404??areFieldsSet=true??areAllFieldsSet=true??lenient=true??zone=sun.util.calendar.ZoneInfo[id="America/Los_Angeles"??offset=-28800000??dstSavings=3600000??useDaylight=true??transitions=185??lastRule=java.util.SimpleTimeZone[id=America/Los_Angeles??offset=-28800000??dstSavings=3600000??useDaylight=true??startYear=0??startMode=3??startMonth=2??startDay=8??startDayOfWeek=1??startTime=7200000??startTimeMode=0??endMode=3??endMonth=10??endDay=1??endDayOfWeek=1??endTime=7200000??endTimeMode=0]]??firstDayOfWeek=2??minimalDaysInFirstWeek=4??ERA=1??YEAR=2014??MONTH=3??WEEK_OF_YEAR=18??WEEK_OF_MONTH=5??DAY_OF_MONTH=28??DAY_OF_YEAR=118??DAY_OF_WEEK=2??DAY_OF_WEEK_IN_MONTH=4??AM_PM=1??HOUR=4??HOUR_OF_DAY=16??MINUTE=28??SECOND=54??MILLISECOND=404??ZONE_OFFSET=-28800000??DST_OFFSET=3600000]
?????????????????TimeZone??GregorianCalendar???toString()??????????????????á?
???????????е?Java 8 ????/???API?????????????????API????????????????????????????????????????????????????????????μ??????????????????????????????????????????