Java 8 時間日期

啦啦啦java

package lime.java1_8.time;


import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;

/**
 * @Author liangmy
 * @Date 2018/7/16
 */
public class Localdatetime {
    public static void main(String[] args) {
        // 取當前日期:
        LocalDate today = LocalDate.now();
        System.out.println(today);
        // 根據年月日取日期,12月就是12:
        LocalDate crischristmas = LocalDate.of(2018, 07, 16);
        System.out.println(crischristmas);
        // 根據字符串取:
        LocalDate endOfFeb = LocalDate.parse("2018-07-16");
        System.out.println(endOfFeb);
        // 取本月第1天:
        LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth());
        System.out.println(firstDayOfThisMonth);
        // 取本月第2天:
        LocalDate secondDayOfThisMonth = today.withDayOfMonth(2);
        System.out.println(secondDayOfThisMonth);
        // 取本月最後一天,不再用計算是28,29,30仍是31:
        LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth());
        System.out.println(lastDayOfThisMonth);
        // 取下一天:
        LocalDate firstDayOf2018 = lastDayOfThisMonth.plusDays(1);
        System.out.println(firstDayOf2018);
        // 取2018年1月第一個週一,這個計算用Calendar要死掉不少腦細胞:
        LocalDate firstMondayOf2018 = today.withMonth(1).with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
        System.out.println(firstMondayOf2018);

        //LocalTime包含毫秒:
        LocalTime now = LocalTime.now();
        System.out.println(now);
        //清除毫秒數:
        LocalTime nowWithNano0 = LocalTime.now().withNano(0);
        System.out.println(nowWithNano0);
        //構造時間:
        LocalTime zeroHM = LocalTime.of(0,0);
        System.out.println(zeroHM);
        LocalTime zeroHMS = LocalTime.of(0, 0, 0);
        System.out.println(zeroHMS);
        LocalTime zeroHMSN = LocalTime.of(0, 0, 0, 0);
        System.out.println(zeroHMSN);
        LocalTime midHMStr = LocalTime.parse("12:00");
        System.out.println(midHMStr);
        LocalTime midHMSStr = LocalTime.parse("12:00:00");
        System.out.println(midHMSStr);

        //建立一個LocatDateTime實例
        LocalDateTime localDateTimeNow = LocalDateTime.now();
        System.out.println(localDateTimeNow);
        LocalDateTime localDateTimeOf = LocalDateTime.of(2018,1, 1, 00, 00, 00, 12);
        System.out.println(localDateTimeOf);

        //Instant : 時間戳
        //默認使用 UTC 時區
        Instant insNow = Instant.now(); 
        System.out.println(insNow);

        OffsetDateTime insUTC8 = insNow.atOffset(ZoneOffset.ofHours(8));
        System.out.println(insUTC8);

        System.out.println(insNow.getNano());

        // 獲取 UTC時區1970年1月1日午夜時分 以後 5 秒的 時間戳
        Instant ofEpochSecond = Instant.ofEpochSecond(5);
        System.out.println(ofEpochSecond);

        //Duration:用於計算兩個「時間」間隔
        //Period:用於計算兩個「日期」間隔

        LocalTime startTime = LocalTime.now();
        LocalTime endTime = startTime.plusHours(1).plusMinutes(2).plusSeconds(3).plusNanos(4);
        Duration duration = Duration.between(startTime, endTime);
        System.out.println(duration);
        System.out.println(duration.getUnits());
        System.out.println(duration.getSeconds());
        System.out.println(duration.getNano());

        LocalDate startDay = LocalDate.now();
        LocalDate endDay = startDay.plusYears(1).plusMonths(2).plusDays(3).plusWeeks(4);
        Period period = Period.between(startDay, endDay);
        System.out.println(period);
        System.out.println(period.getYears());
        System.out.println(period.getMonths());
        System.out.println(period.getDays());
        System.out.println(period.getUnits());
        System.out.println(period.getChronology());

        //TemporalAdjuster :時間校訂器

        LocalDate with = today.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
        System.out.println(with);

        //DateTimeFormatter
        //預約義的標準格式
        //語言環境相關的格式
        //自定義的格式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss E");
        String localDateTime = LocalDateTime.now().format(dateTimeFormatter);
        System.out.println(localDateTime);

        //時區的處理
        //ZonedDate、 ZonedTime、 ZonedDateTime
        //其中每一個時區都對應着 ID,地區ID都爲 「{區域}/{城市}」的格式 Asia/Shanghai
        //ZoneId:該類中包含了全部的時區信息
        //getAvailableZoneIds() : 能夠獲取全部時區時區信息
        //of(id) : 用指定的時區信息獲取 ZoneId 對象
        LocalDateTime zoneAsiaShanghai = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));
        System.out.println(zoneAsiaShanghai);
        LocalDateTime zoneSystemDefault = LocalDateTime.now(ZoneId.systemDefault());
        System.out.println(zoneSystemDefault);

        //from(Instant instant)
        //toInstant()

        // Long - Instant
        Instant instant = Instant.ofEpochMilli(System.currentTimeMillis());
        System.out.println(instant);

        //Instant - Long
        Long timestamp = Instant.now().toEpochMilli();
        System.out.println(timestamp);

        // Date - LocalDateTime
        LocalDateTime date2LocalDateTime = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault());
        System.out.println(date2LocalDateTime);

        // Date - LocalDate
        LocalDate date2LocalDate = date2LocalDateTime.toLocalDate();
        System.out.println(date2LocalDate);

        // Date - LocalTime
        LocalTime date2LocalTime = date2LocalDateTime.toLocalTime();
        System.out.println(date2LocalTime);

        // LocalDateTime - Date
        Date localDateTime2Date = Date.from(date2LocalDateTime.toInstant(ZoneOffset.ofHours(8)));
        System.out.println(localDateTime2Date);

        // LocalDate - Date
        Date localDate2Date = Date.from(date2LocalDate.atStartOfDay().toInstant(ZoneOffset.ofHours(8)));
        System.out.println(localDate2Date);

        // LocalTime - Date
        Date localTime2Date = Date.from(LocalDateTime.of(LocalDate.now(), date2LocalTime).toInstant(ZoneOffset.ofHours(8)));
        System.out.println(localTime2Date);


    }
}

啦啦啦spa

相關文章
相關標籤/搜索