1 时间的基础知识

  • 全球有24个时区,每个时区都不一样,为了统一时间设置了全球统一时间UTC(Universal Time Coordinated);
  • 格林尼治时间GMT(和全球标准时间一致);
  • 北京时间CST(和全球标准时间差8个小时);
  • **时间戳:**指的是1970年1月1日到至今的时间,单位毫秒数,也可以为秒;

2 时间处理类

  • Jdk8引入了Date-time api 提供了对时间操作的类(加减、格式化、比较…)
  • 在时间包java.lang中
  • 核心3大类:
    LocalDate
    LocalTime
    LocalDataTime
    以LocalDate示例

2.1 常用方法

  • LocalDate类是构造方法是私有的不能实例化,但是LocalDate提供了静态方法返回LocalDate对象

返回LocalDate对象的静态方法

方法

描述

now()

获取当前时间的对象

now(int year ,int month ,int day)

获取当前时间的对象

of (int year ,int month ,int day)

获取指定的时间的对象

plusYears(long yearsToAdd)

当前日期对象上加一年

plusMonths(long monthsToAdd)

前日期对象上加一月

plusWeeks(long WeeksToAdd)

前日期对象上加一周

plusDays(long WeeksToAdd)

前日期对象上加一天

minusYears(long YearsToSubtract)

当前日期对象上减一年

minusMonths(long MonthsToSubtract)

前日期对象上减一月

minusWeeks(long weeksToSubtract)

前日期对象上减一周

minusDays(long DaysToSubtract)

前日期对象上减一天

返回对象的普通方法

方法

描述

LocalDate withYear(int a)

为LocalDate对象设定一个年份,并返回一个LocalDate对象

LocalDate withMonth(int a)

为LocalDate对象设定一个月份,并返回一个LocalDate对象

LocalDate withDayOfMonth(int a)

设置月数的第几天,并返回一个LocalDate对象

LocalDate withDayOfyears(int a)

设置年份的第几天,并返回一个LocalDate对象

对日期对象进行操作

方法

描述

int getyear()

获取日期对象的年份

Month getMonth()

返回一个month对象

int getMonthValue()

返回日期对象的月份

int getDayOfMonth()

返回该日期对象的月份是第几天

int getDayOfYear()

返回该日期对象的年是第几天

boolean isAfter(ChronoLocalDate other)

判断这个日期是否在other之后

boolean isBeforce(ChronoLocalDate other)

判断这个日期是否在other之前

boolean isEquals(ChronoLocalDate other)

判断这个日期是否和other相等

示例

package FileDemo;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.io.*;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;

public class StreamDemo {
    public static void main(String[] args) throws IOException {
        //获取当前时间的日期对象
        LocalDate now = LocalDate.now();
        System.out.println(now);
        System.out.println("==================================");
        //当前日期为加上2年
        LocalDate localDate = now.plusYears(2);
        System.out.println("当前日期为加上2年是"+localDate);
        System.out.println("==================================");
        //当前日期为加上5个月
        LocalDate localDate1 = now.plusMonths(5);
        System.out.println("当前日期为加上5个月是"+localDate1);
        System.out.println("==================================");

        //当前日期为加上5个星期
        LocalDate localDate2 = now.plusWeeks(5);
        System.out.println("当前日期为加上5个星期是"+localDate2);
        System.out.println("==================================");

        //当前日期为加上5天
        LocalDate localDate3 = now.plusDays(5);
        System.out.println("当前日期为加上5天是"+localDate3);
        System.out.println("==================================");


        //指定的日期对象
        LocalDate of = LocalDate.of(1995, 10, 10);
        //为这个日期的减少5年
        LocalDate localDate4 = of.minusYears(5);
        System.out.println("当前日期为减上5天是"+localDate4);
        System.out.println("==================================");
        //为这个日期的减少10个月
        LocalDate localDate5 = of.minusMonths(10);
        System.out.println("当前日期为减上10个月是"+localDate5);
        System.out.println("==================================");
        //为这个日期减少20周
        LocalDate localDate6 = of.minusWeeks(20);
        System.out.println("当前日期为减上20个周是"+localDate6);
        System.out.println("==================================");
        //为这个日期减少100天
        LocalDate localDate7 = of.minusDays(100);
        System.out.println("当前日期为减上20个周是"+localDate7);
        System.out.println("==================================");


        //修改当前日期的年份
        LocalDate dates=LocalDate.now();
        //`修改当前日期为1995年
        LocalDate date = dates.withYear(1995);
        System.out.println("修改年份为1995年"+date);
        System.out.println("==================================");

        //修改月份为7月
        LocalDate localDate8 = date.withMonth(7);
        System.out.println("修改月份为7月"+localDate8);
        System.out.println("==================================");


        //修改当前月份的13日
        LocalDate localDate9 = date.withDayOfMonth(13);
        System.out.println("修改月份为13日"+localDate9);
        System.out.println("==================================");

        //修改当前年份的第1天;
        LocalDate localDate10 = localDate9.withDayOfYear(1);
        System.out.println("修改年份的第1天"+localDate10);
        System.out.println("==================================");


        //以localDate对象为例调用方法
        int year = localDate10.getYear();
        System.out.println(year);

        int monthValue = localDate10.getMonthValue();
        System.out.println(monthValue);


        int dayOfMonth = localDate10.getDayOfMonth();
        System.out.println(dayOfMonth);

        int dayOfYear = localDate10.getDayOfYear();
        System.out.println(dayOfYear);

        System.out.println("==================================");
        LocalDate of1 = LocalDate.of(1995, 8, 06);
        LocalDate of2 = LocalDate.of(1995, 7, 13);
        boolean before = of1.isBefore(of2);
        System.out.println(before);

        boolean after = of1.isAfter(of2);
        System.out.println(after);

        boolean equal = of1.isEqual(of2);
        System.out.println(equal);
    }
}

3 时间格式化

3.1 DateTimeFormatter

  • DateTimeFormatter是线程是安全的
    示例
package FileDemo;


import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class StreamDemo {
    public static void main(String[] args) throws IOException {
        LocalDateTime now = LocalDateTime.now();


        //获取DateTimeFormatter实例
        DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd  HH:mm:ss");
        //调用format方法
        String format = dateTimeFormatter.format(now);

        System.out.println(format);
    }
}

java 时间戳 相隔天数 java 时间戳 时区_开发语言

4 Duration

  • 计算时间差的类

实例

package FileDemo;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.io.*;
import java.time.*;
import java.time.format.DateTimeFormatter;

public class StreamDemo {
    public static void main(String[] args) throws IOException {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime of = LocalDateTime.of(1995, 12, 23,12,12,12);
        //第二个减去第一个
        Duration duration =Duration.between(of,now);
        System.out.println("当前时间与of的天数差是"+duration.toDays());
        System.out.println("当前时间与of的小时差是"+duration.toHours());
        System.out.println("当前时间与of的分钟数差是"+duration.toMinutes());
        System.out.println("当前时间与of的秒数差是"+duration.toMillis());
        
    }
}

java 时间戳 相隔天数 java 时间戳 时区_jvm_02