JDK1.8의 일반적인 날짜 문 요약

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter tf = DateTimeFormatter.ofPattern("HH:mm:ss");

 

1. 이번 달 1일과 다음 달 1일의 시간 구하기

//————————————分割线(方法一)————————————————
//获得当前月第一天0时0分0秒 
Date sdate = Date.from(localDate.with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay(ZoneId.systemDefault()).toInstant()); 
//获得当次月第一天0时0分0秒 
Date edate = Date.from(localDate.with(TemporalAdjusters.firstDayOfNextMonth()).atStartOfDay(ZoneId.systemDefault()).toInstant());

//————————————分割线(方法二)————————————————
//获得当前月第一天0时0分0秒 
LocalDate firstDay=  localDate.with(TemporalAdjusters.firstDayOfMonth());
LocalDateTime  firstDaySencond = LocalDateTime.of(firstDay.getYear(),firstDay.getMonth(),firstDay.getDayOfMonth(),0,0,0);
//获得当前月最后天23时59分59秒 
LocalDate lastDay=  localDate.with(TemporalAdjusters.lastDayOfMonth());
LocalDateTime  lastDaySencond = LocalDateTime.of(lastDay.getYear(),lastDay.getMonth(),lastDay.getDayOfMonth(),23,59,59);

//输出:
dtf.format(firstDaySencond);

2. 날짜 API

2.1 현지 날짜

 

public static void testDate() {
    // 1. 获取当前日期(年月日) -----打印输出-----2018-01-29
    LocalDate localDate = LocalDate.now();
    System.out.println(localDate.toString());
    // 2. 根据年月日构建Date ----打印输出-----2018-01-30
    LocalDate localDate1 = LocalDate.of(2018, 01, 30);
    // 3. 字符串转换日期,默认按照yyyy-MM-dd格式,也可以自定义格式 -----打印输出-----2018-01-30
    LocalDate localDate2 = LocalDate.parse("2018-01-30");
    // 4. 获取本月第一天 -----打印输出-----2018-01-01
    LocalDate firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
    // 5. 获取本月第二天  -----打印输出-----2018-01-02
    LocalDate secondDayOfMonth = localDate.withDayOfMonth(2);
    // 6. 获取本月最后一天 -----打印输出-----2018-01-31
    LocalDate lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());
    // 7. 明天 -----打印输出----- 2018-01-30
    LocalDate tomorrowDay = localDate.plusDays(1L);
    // 8. 昨天 -----打印输出----- 2018-01-28
    LocalDate yesterday = localDate.minusDays(1L);
    // 9. 获取本年第12天 -----打印输出----- 2018-04-30
    LocalDate day = localDate.withDayOfYear(120);
    // 10. 计算两个日期间的天数
    long days = localDate.until(localDate1, ChronoUnit.DAYS);
    System.out.println(days);
    // 11. 计算两个日期间的周数
    long weeks = localDate.until(localDate1, ChronoUnit.WEEKS);
    System.out.println(weeks);
}

 

getYear()    int    获取当前日期的年份
getMonth()    Month    获取当前日期的月份对象
getMonthValue()    int    获取当前日期是第几月
getDayOfWeek()    DayOfWeek    表示该对象表示的日期是星期几
getDayOfMonth()    int    表示该对象表示的日期是这个月第几天
getDayOfYear()    int    表示该对象表示的日期是今年第几天
withYear(int year)    LocalDate    修改当前对象的年份
withMonth(int month)    LocalDate    修改当前对象的月份
withDayOfMonth(int dayOfMonth)    LocalDate    修改当前对象在当月的日期
isLeapYear()    boolean    是否是闰年
lengthOfMonth()    int    这个月有多少天
lengthOfYear()    int    该对象表示的年份有多少天(365或者366)
plusYears(long yearsToAdd)    LocalDate    当前对象增加指定的年份数
plusMonths(long monthsToAdd)    LocalDate    当前对象增加指定的月份数
plusWeeks(long weeksToAdd)    LocalDate    当前对象增加指定的周数
plusDays(long daysToAdd)    LocalDate    当前对象增加指定的天数
minusYears(long yearsToSubtract)    LocalDate    当前对象减去指定的年数
minusMonths(long monthsToSubtract)    LocalDate    当前对象减去注定的月数
minusWeeks(long weeksToSubtract)    LocalDate    当前对象减去指定的周数
minusDays(long daysToSubtract)    LocalDate    当前对象减去指定的天数
compareTo(ChronoLocalDate other)    int    比较当前对象和other对象在时间上的大小,返回值如果为正,则当前对象时间较晚,
isBefore(ChronoLocalDate other)    boolean    比较当前对象日期是否在other对象日期之前
isAfter(ChronoLocalDate other)    boolean    比较当前对象日期是否在other对象日期之后
isEqual(ChronoLocalDate other)    boolean    比较两个日期对象是否相等

 

2.2 현지 시간

마찬가지로 LocalDate에 해당하는 또 다른 클래스는 LocalTime입니다.이 클래스는 LocalDate와 정반대이며 날짜를 포함하지 않고 모든 시간을 나타냅니다. 예는 다음과 같습니다.

public static void testTime() {
    // 1. 获取当前时间,包含毫秒数 -----打印输出----- 21:03:26.315
    LocalTime localTime = LocalTime.now();
    // 2. 构建时间 -----打印输出----- 12:15:30
    LocalTime localTime1 = LocalTime.of(12, 15, 30);
    // 3. 获取当前时间,不包含毫秒数 -----打印输出----- 21:01:56
    LocalTime localTime2 = localTime.withNano(0);
    // 4. 字符串转为时间,还可以有其他格式,比如12:15, 12:15:23.233
    // -----打印输出----- 12:15:30
    LocalTime localTime3 = LocalTime.parse("12:15:30");
}

2.3 로컬 날짜 시간

LocalDateTime은 원본 java.util.Date와 매우 유사하며 날짜와 시간을 모두 포함하고 있으며 DateTimeFormatter와 함께 자주 사용됩니다.

public static void testDateTime() {
    // 1. 获取当前年月日 时分秒 -----打印输出----- 2018-01-29T21:23:26.774
    LocalDateTime localDateTime = LocalDateTime.now();
    // 2. 通过LocalDate和LocalTime构建 ----- 打印输出----- 2018-01-29T21:24:41.738
    LocalDateTime localDateTime1 = LocalDateTime.of(LocalDate.now(), LocalTime.now());
    // 3. 构建年月日 时分秒 -----打印输出----- 2018-01-29T19:23:13
    LocalDateTime localDateTime2 = LocalDateTime.of(2018, 01, 29, 19, 23, 13);
    // 4. 格式化当前时间 ----打印输出----- 2018/01/29
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
    System.out.println(formatter.format(localDateTime2));
}

2.4 임시 조정자

// 1. 本月第一天
LocalDate firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
// 2. 本月最后一天
LocalDate lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());
// 3. 本年第一天
LocalDate firstDayOfYear = localDate.with(TemporalAdjusters.firstDayOfYear());
// 4. 下个月第一天
LocalDate firstDayOfNextMonth = localDate.with(TemporalAdjusters.firstDayOfNextMonth());
// 5. 本年度最后一天
LocalDate lastDayOfYear = localDate.with(TemporalAdjusters.lastDayOfYear());

3. 전환

3.1 java.util.Date 및 LocalDate, LocalTime, LocalDateTime 교체

날짜를 LocalDate, LocalTime 및 LocalDateTime으로 변환은 다음과 같이 ZonedDateTime 및 Instant를 사용하여 구현할 수 있습니다.

Date date = new Date();
System.out.println("current date: " + date);

// Date -> LocalDateTime
LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("localDateTime by Instant: " + localDateTime);

// Date -> LocalDate
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("localDate by Instant: " + localDate);
// Date -> LocalTime
LocalTime localTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
System.out.println("localTime by Instant: " + localTime);

//2. Date -> LocalDateTime
localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
System.out.println("localDateTime by ofInstant: " + localDateTime);

JDK8은 이전 버전과의 호환성을 달성하므로 Date는 JDK8 버전에서 두 가지 방법을 도입하므로 from 이
toInstant두 가지 방법을 사용하여 LocalDateTime에서 Date로의 변환을 실현할 수 있습니다. 다음과 같이 LocalDateTime을 날짜로 변환합니다. 

LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("localDateTime: " + localDateTime);

// LocalDateTime -> Date
Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
System.out.println("LocalDateTime -> current date: " + date);

// LocalDate -> Date,时间默认都是00
LocalDate localDate = LocalDate.now();
date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
System.out.println("LocalDate -> current date: " + date);

3.2 날짜와 문자열의 변환

  날짜를 문자열로 변환하는 것은 비교적 간단합니다. 먼저 LocalDate, LocalTime, LocalDateTime 및 DateTimeFormatter의 parse 메서드를 통해 날짜 형식으로 변환하는 방법에 대해 이야기해 보겠습니다.

LocalDate localDate = LocalDate.parse("2018-09-09", DateTimeFormatter.ofPattern("yyyy-MM-dd"));

LocalDateTime localDateTime = LocalDateTime.parse("2018-09-10 12:12:12", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:ss:mm"));

날짜를 문자열로 변환하려면 format 메서드와 DateTimeFormatter를 사용하여 다음을 수행할 수 있습니다.

String localDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String localDateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:ss:mm"));

저자: 거북이를 타고 바다를 보다
링크: https://www.jianshu.com/p/f4abe1e38e09
출처: Jianshu 

Guess you like

Origin blog.csdn.net/LOVE_sel/article/details/84573916