彻底弄懂Java中的日期时间类(JDK1.7之前、JDK1.8新增)

7.1 日期时间类(1.7之前)

7.1.1 Date类

Date表示当前时刻

常见的构造方法:

返回值 方法 含义
Date new Date() 获取当前时间的Date对象
Date new Date(long date) 使用指定的毫秒值来获取相对应的Date对象(从1970年1月1日00:00:00 GMT 开始算)
public class DateTimeTest {
     

    public static void main(String[] args) {
     

        //获取当前的时间
        Date date1 = new Date();
        System.out.println(date1);

        //使用指定毫秒值来创建一个日期对象
        Date date = new Date(1273906775);
        System.out.println(date);

    }

}

常用的方法:

返回值 方法 含义
Long getTime() 把日期对象转换成对应的时间毫秒值
7.1.2 DateFormat类

DateFormat是日期时间格式化子类的抽象类,提供Date字符串表示之间的转换,是线程不安全

SimpleDateFormat是DateFormat的子类,也是线程不安全的,与DateFormat不同的是它可以自定义日期格式

常见的方法:

返回值 方法 含义
SimpleDateFormat() 用默认的格式构造SimpleDateFormat
SimpleDateFormat(String pattern) 用给定的格式构造SimpleDateFormat
String format(Date date) 将Date对象格式化为字符串
Date parse(String pattern) 将字符串解析为Date对象

常用的格式规则

标识字母(区分大小写) 含义
y
M
d
H
m
s
    //用指定的格式格式化时间
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println(dateFormat.format(new Date()));

    //将指定的时间字符串表示形式转换为Date
    Date date2 = dateFormat.parse("2020-08-01 00:00:00");
    System.out.println(date2);

7.1.3 Calender类

Calender是日历类,替换掉了许多Date中的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取,日历类就是方便获取各个时间属性

Calendar是抽象类,在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象

//使用默认时区和语言环境获得一个日历(当前时间)
//可以指定TimeZone(时区)和Local(地区)
Calendar cal = Calendar.getInstance();

常用的字段:

字段 含义
YEAR
MONTH 月(从0开始,可以+1使用)
DAY_OF_MONTH 月中的天(几号)
HOUR 时(12小时制)
HOUR_OF_DAY 时(24小时制)
MINUTE
SECOND
DAY_OF_WEEK 周中的天(周几,周日为1,可以-1使用)

常见的方法:

返回值 方法 含义
int get(int fields) 获取指定字段的值
void set(int field, int value) 设置指定字段的值
void add(int field, int amount) 对指定日历字段的值进行加减操作,如果第二个参数为正数则加上偏移量,如果为负数则减去偏移量
Date getTime() 获取对应的Date对象
public class CalendarDemo {
     

    public static void main(String[] args) {
     

        //获取Calendar对象
        Calendar calendar = Calendar.getInstance();

        //获取年月日时分秒
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MONTH)+1);
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println(calendar.get(Calendar.MINUTE));
        System.out.println(calendar.get(Calendar.SECOND));

    }
}

7.2 日期时间类(1.8)推荐使用

7.2.1 LocalDate类

LocalDate是一个不可变的且线程安全日期

常见的方法:

返回值 方法 含义
LocalDate now() (静态方法) 获取当前的日期
LocalDate of(int year,int month,int day) (静态方法) 构造指定的LocalDate对象
String format(DateTimeFormatter formatter) 格式化日期时间对象
int getYear() 获取年份
int getMonth() 获取月份
int getDayOfMonth() 获取日
DayOfWeek getDayOfWeek() 获取星期几
public class LocalDateDemo {
     
    public static void main(String[] args) {
     
        
        //获取当前时间的年月日
        LocalDate now = LocalDate.now();
        System.out.println(now);
        System.out.println(now.getYear());
        System.out.println(now.getMonth());
        System.out.println(now.getDayOfMonth());
        System.out.println(now.getDayOfWeek());
    }
}
7.2.2 LocalTime类

LocalDate是一个不可变的且线程安全时间

常见的方法:

返回值 方法 含义
LocalTime now() (静态方法) 获取当前的日期
LocalTime of(int hour,int minute,int second) (静态方法) 构造指定的LocalTime对象
String format(DateTimeFormatter formatter) 格式化日期时间对象
int getHour() 获取小时
int getMinute() 获取分钟
int getSecond() 获取秒
public class LocalTimeDemo {
     

    public static void main(String[] args) {
     
        //获取当前时间的时分秒毫秒
        LocalTime time = LocalTime.now();
        System.out.println(time);
        System.out.println(time.getHour());
        System.out.println(time.getMinute());
        System.out.println(time.getSecond());
    }
}

7.2.3 LocalDateTime类

LocalDate是一个不可变的且线程安全日期时间

public class LocalDateTimeDemo {
     

    public static void main(String[] args) {
     

        LocalDateTimeDemo.getDateTime();
    }

    /**
     * 获取当前的时间、年、月、日、时、分、秒、毫秒
    
     */
    public static void getDateTime(){
     

        //LocalDateTime获取到的时间为年月日时分秒毫秒
        LocalDateTime dateTime = LocalDateTime.now();
        System.out.println(dateTime);
        
        //打印昨天的当前时刻
        LocalDateTime yesterday = dateTime.minusDays(1);
        System.out.println(yesterday);

        System.out.println("年:"+dateTime.getYear());
        System.out.println("月:"+dateTime.getMonthValue());
        System.out.println("日:"+dateTime.getDayOfMonth());
        System.out.println("时:"+dateTime.getHour());
        System.out.println("分:"+dateTime.getMinute());
        System.out.println("秒:"+dateTime.getSecond());
        System.out.println("毫秒:"+ Clock.systemDefaultZone().millis());

    }
}
7.2.4 DateTimeFormatter类

DateTimeFormatter是一个不可变的且线程安全日期时间格式化类

常见的方法:

返回值 方法 含义
DateTimeFormatter ofPattern(String pattern) 创建指定的格式化程序
public static void main(String[] args) {
     
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.now();
        System.out.println(dateTime);
    
        //切记:是使用LocalDateTime类里面的format方法
        System.out.println(dateTime.format(dateTimeFormatter));
    }

你可能感兴趣的:(JavaSE,java)