java时间处理

时间处理

年月日时分秒

package com.itheima.dao;

import java.time.LocalDateTime;
import java.util.Calendar;

public class Test {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        // 年
        System.out.println(cal.get(Calendar.YEAR));  // 2020
        // 月
        System.out.println(cal.get(Calendar.MONTH) + 1);  // 1
        // 日
        System.out.println(cal.get(Calendar.DATE));  // 10
        // 时
        System.out.println(cal.get(Calendar.HOUR_OF_DAY));  // 11
        // 分
        System.out.println(cal.get(Calendar.MINUTE));  // 18
        // 秒
        System.out.println(cal.get(Calendar.SECOND));  // 6

        // JAVA8的语法
        LocalDateTime dt = LocalDateTime.now();
        // 年
        System.out.println(dt.getYear());  // 2020
        // 一年当中的第几天
        System.out.println(dt.getDayOfYear());  // 10
        // 月
        System.out.println(dt.getMonth());  // JANUARY
        System.out.println(dt.getMonthValue());  // 1
    }
}

时间戳

public class Test {
    public static void main(String[] args) {
        // 获取时间戳
        Calendar cal = Calendar.getInstance();
        System.out.println(cal.getTimeInMillis());  // 1578626690553

        System.out.println(System.currentTimeMillis());  // 1578626739117

        // Java8方法
        System.out.println(Clock.systemDefaultZone().millis());  // 1578626786766
    }
}

获取当前月的第一天

public class Test {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH,0);
        cal.set(Calendar.DAY_OF_MONTH,1);  // 设置为1号,当前日期就是本月的第一天
        
        // 创建格式化对象
        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
        // 通过格式化对象进行格式化
        String time = format.format(cal.getTime());
        System.out.println(time);  // 2020年01月01日
        
        // JAVA8
        LocalDateTime today = LocalDateTime.now();
        // 2020-01-01
        System.out.println(LocalDate.of(today.getYear(), today.getMonth(), 1));
    }
}

获取当前月的最后一天

public class Test {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
        System.out.println(dateFormat.format(cal.getTime()));  // 2020年01月31日

        // JAVA8
        LocalDate today = LocalDate.now();
        System.out.println(today.with(TemporalAdjusters.lastDayOfMonth())); // 2020-01-31
    }
}

日期的格式化

public class Test {
    public static void main(String[] args) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
        Date date = new Date();
        System.out.println(dateFormat.format(date));  // 2020/01/10

        // JAVA8
        DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        LocalDate nowDate = LocalDate.now();
        System.out.println(nowDate.format(newFormatter));  // 2020/01/10
    }
}

昨天的当前时刻

public class Test {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE,-1);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
        System.out.println(simpleDateFormat.format(cal.getTime()));  // 2020/01/09

        // JAVA8
        LocalDateTime today = LocalDateTime.now();
        LocalDateTime yesterday = today.minusDays(1);
        DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        System.out.println(yesterday.format(newFormatter));  // 2020/01/09
    }
}

LocalDate

获取日期

public class Test {
    public static void main(String[] args) {

        // 获取当前的日期
        // 默认是(yyyy-MM-dd)格式的日期
        LocalDate today = LocalDate.now();
        System.out.println("今天的日期是:" + today);  // 今天的日期是:2020-01-10

        // 指定一个日期
        LocalDate date = LocalDate.of(2014, Month.JANUARY, 10);
        System.out.println("指定的日期为:" + date);  // 指定的日期为:2014-01-10

        // 2020年的第32天是几号?
        LocalDate localDate = LocalDate.ofYearDay(2020, 32);
        System.out.println(localDate);  // 2020-02-01
    }
}

LocalTime

获取时间

public class Test {
    public static void main(String[] args) {

        // 默认格式(hh:mm:ss.zzz)
        LocalTime time1 = LocalTime.now();
        System.out.println("当前的时间是:" + time1);  // 当前的时间是:14:54:11.078

        // 指定一个精确时间
        LocalTime specificTime = LocalTime.of(12, 20, 25, 40);
        System.out.println(specificTime);  // 12:20:25.000000040
    }
}

LocalDateTime

获取日期时间

public class Test {
    public static void main(String[] args) {

        LocalDateTime time = LocalDateTime.now();
        System.out.println("当前的日期时间是" + time);  
        // 当前的日期时间是2020-01-10T14:58:33.138

        LocalDateTime time1 = LocalDateTime.of(LocalDate.now(), LocalTime.now());
        System.out.println("当前的日期时间是" + time1);  
        // 当前的日期时间是2020-01-10T15:00:33.881

        LocalDateTime time2 = LocalDateTime.of(2014, Month.JANUARY, 1, 10, 10, 30);
        System.out.println("指定的日期时间是" + time2);  
        // 指定的日期时间是2014-01-01T10:10:30
    }
}

日期API工具

public class Test {
    public static void main(String[] args) {
        // 判断今年是不是闰年
        LocalDate today = LocalDate.now();
        System.out.println(today.getYear()+"年是否是闰年?" + today.isLeapYear());  // 2020年是否是闰年?true

        // 比较两个日期,今天是否在2021/01/01之前
        System.out.println(today.isBefore(LocalDate.of(2021,1,1)));  // true
        // 比较今天是否在2021/01/01之后
        System.out.println(today.isAfter(LocalDate.of(2021,1,1)));  // false

        // 为日期添加时间
        System.out.println(today);  // 2020-01-10
        System.out.println(today.atTime(LocalTime.now()));  // 2020-01-10T16:46:25.569

        // 今天是2020/01/10 10天之后的日期是
        System.out.println("10天之后的日期是:"+today.plusDays(10));  
        // 10天之后的日期是:2020-01-20
        System.out.println("3周之后的日期是:"+today.plusWeeks(3));  
        // 3周之后的日期是:2020-01-31
        System.out.println("20个月之后的日期是:"+today.plusMonths(20));  
        // 20个月之后的日期是:2021-09-10

        // 第一天和最后一天
        System.out.println("本月的第一天的日期是:"+today.with(TemporalAdjusters.firstDayOfMonth()));  
        // 本月的第一天的日期是:2020-01-01
        System.out.println("今天的最后一天是:"+today.with(TemporalAdjusters.lastDayOfYear()));  
        // 今天的最后一天是:2020-12-31

        // 根据指定的单位计算到另一个日期的时间量
        LocalDate obj = LocalDate.parse("2020-01-15");
        // ChronoUnit.DAYS 以天为单位
        long time = today.until(obj, ChronoUnit.DAYS);
        System.out.println("今天的日期是:"+today+",到达"+obj+"还有"+time+"天");  
        // 今天的日期是:2020-01-10,到达2020-01-15还有5天
    }
}

日期的解析和格式化

public class Test {
    public static void main(String[] args) {

        LocalDate date = LocalDate.now();
        System.out.println(date);  // 2020-01-10

        System.out.println(date.format(DateTimeFormatter.ofPattern("d::MMM::uuuu")));  // 10::一月::2020
        System.out.println(date.format(DateTimeFormatter.BASIC_ISO_DATE));  // 20200110

        Instant timestamp = Instant.now();
        System.out.println(timestamp);  // 2020-01-10T09:39:34.520Z

        LocalDateTime dt = LocalDateTime.parse("27::四月::2020 21::39::48", DateTimeFormatter.ofPattern("d::MMM::uuuu HH::mm::ss"));
        System.out.println(dt);  // 2020-04-27T21:39:48
    }
} 

你可能感兴趣的:(java)