java时间与日期

一、前言

在 JDK 8 之前,Java 语言为我们提供了两个类用于操作时间,它们分别是:java.util.Datejava.util.Calendar

但在 JDK 8 的时候为了解决旧时间操作类的一些缺陷,提供了几个新的类,用于操作时间和人气,

它们分别是:LocalTimeLocalDateTimeInstant都位于 java.time 包下

时间的操作在我们日常的开发中经常见到,比如,业务数据都要记录创建时间和修改时间,并要把这些时间格式化之后显示到前端页面,再比如我们需要计算业务数据的时间间隔等,都离不开对时间的操作。

时间戳:时间戳是指格林威治时间 1970-01-01 00:00:00(北京时间 1970-01-01 08:00:00)起至现在的总秒数。

 

二、获取时间

获取时间

说明

使用频率

java.util.Date

new Date()

Date对象

少用

System

System.currentTimeMillis()

时间戳

常用

java.util.Calendar

Calendar.getInstance().getTime()

Date升级版

较常用

java.time.LocalDate

LocalDate.now()

只有日期

推荐 (JDK1.8新API)

java.time.LocalTime

LocalTime.now()

只有时间

推荐 (JDK1.8新API)

java.time.LocalDateTime

LocalDateTime.now()

日期时间

推荐 (JDK1.8新API)

java.time.ZonedDateTime

ZonedDateTime.now()

有时区

推荐 (JDK1.8新API)

Instant

Instant.now()

时刻

推荐 (JDK1.8新API)

import java.text.SimpleDateFormat;
import java.time.*;
import java.util.Calendar;
import java.util.Date;


public class CurrentTime {
    public static void main(String[] args) {
        //getByDate();
        //getBySystem();
        //getByCalendar();
        //getByLocalDate();
        //getByLocalTime();
        //getByLocalDateTime();
        //getByZonedDateTime();
        //getByInstant();
    }
    
    // 使用java.util.Date类
    public static void getByDate(){
        Date date = new Date();
        //SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //System.out.println(format.format(date));
        System.out.println(date);
    }
    // 使用System类
    public static void getBySystem(){
        long l = System.currentTimeMillis();
        Date date = new Date(l);
        System.out.println(date);
    }
    // 使用Calendar类
    public static void getByCalendar(){
        Date time = Calendar.getInstance().getTime();
        System.out.println(time);
    }
    // 使用LocalDate类:只有日期,无时间
    public static void getByLocalDate(){
        LocalDate now = LocalDate.now();
        System.out.println(now);
    }
    // 使用LocalTime类:只有时间,无日期
    public static void getByLocalTime(){
        LocalTime now = LocalTime.now();
        System.out.println(now);
    }
    // 使用LocalDateTime类
    public static void getByLocalDateTime(){
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);
    }
    // 使用ZonedDateTime类
    public static void getByZonedDateTime(){
        ZonedDateTime now = ZonedDateTime.now();
        System.out.println(now);
    }
    // 使用Instant类
    public static void getByInstant(){
        Instant now = Instant.now();
        System.out.println(now);
    }
    
}

 

三、格式化时间

1、JDK8之前的操作

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sf.format(new Date()));  // output:2022-08-06 21:46:22

SimpleDateFormat 构造参数的含义,请参考以下表格信息:

字符

含义

示例

y

yyyy-1996

M

MM-07

d

月中的天数

dd-02

D

年中的天数

121

E

星期几

星期四

H

小时数(0-23)

HH-23

h

小时数(0-12)

hh-11

m

分钟数

mm-02

s

秒数

ss-03

Z

时区

+0800

使用示例:

  • 获取星期几:new SimpleDateFormat("E").format(new Date())
  • 获取当前时区:new SimpleDateFormat("Z").format(new Date*())

2、JDK8的操作

// 时间格式化①
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String timeFormat = dateTimeFormatter.format(LocalDateTime.now());
System.out.println(timeFormat);  // output:2019-08-16 21:15:43

// 时间格式化②
String timeFormat2 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(timeFormat2);    // output:2019-08-16 21:17:48

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值