Java语言进阶-常用类-日期时间类

java.lang.System类

System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

  • 此方法适合用于计算时间差

计算世界时间主要有三个标准:UTC/GMT/CST

java.util.Date类

表示特定的瞬间,精确到毫秒

这个类有两个构造器:Date()/Date(long date)

常用方法:

  • getTime()

    返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

  • toString()

    把此 Date 对象转换为以下形式的 String:dow mon dd hh:mm:ss zzz yyyy。其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。

import java.util.Date;

public class DateTimeTest {
    public static void main(String[] args) {
        Date d = new Date();
        System.out.println(d.getTime());
        System.out.println(d.toString());
    }
}

---------
1591861083689
Thu Jun 11 15:37:09 CST 2020

java.text.SimpleDateFormat类

SimpleDateFormat类是一个允许自定义格式化的类。

这个类也有两个构造器:SimpleDateFormat()/SimpleDateFormat(String pattern)

常用方法:

  • Format(Date date)

    方法格式化时间对象date

  • parse(String source)

    从给定字符串的开始解析文本,生成一个日期

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTimeTest {
    public static void main(String[] args) {
        // 产生一个Date实例
        Date date = new Date(); 

        // 产生一个formater格式化的实例
        SimpleDateFormat formater = new SimpleDateFormat();
        // 打印输出默认的格式
        System.out.println(formater.format(date));

        SimpleDateFormat formater2 = new SimpleDateFormat("yyyy年MM月dd日 EEEHH:mm:ss");
        System.out.println(formater2.format(date));

        try {
            // 实例化一个指定的格式对象
            Date date2 = formater2.parse("2008年08月08日 星期一 08:08:08");
            // 将指定的日期解析后格式化按指定的格式输出
            System.out.println(date2.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

java.util.Calendar类

Calendar是一个抽象基类,用于完成日期字段之间相互操作的功能。

构造器:Calendar.getInstance()/GregorianCalendar()

常用方法:

  • get(int field)

    获取想要得到的时间信息。

    field可以是YEAR(年)、MONTH(月)、DAY_OF_WEEK(日)、HOUR_OF_DAY(时)、MINUTE(分)、SECOND(秒)

  • set(int field,int value)

    修改时间信息

  • add(int field,int amount)

    增加时间信息的值

  • getTime()

    获取时间

  • setTime()

    修改时间

import java.util.Calendar;
import java.util.Date;

public class DateTimeTest {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();

        // 从一个 Calendar 对象中获取 Date 对象
        Date date = calendar.getTime();

        // 使用给定的 Date 设置此 Calendar 的时间
        date = new Date(234234235235L);

        calendar.setTime(date);
        
        calendar.set(Calendar.DAY_OF_MONTH, 8);
        System.out.println("当前时间日设置为8后,时间是:" + calendar.getTime());

        calendar.add(Calendar.HOUR, 2);
        System.out.println("当前时间加2小时后,时间是:" + calendar.getTime());

        calendar.add(Calendar.MONTH, -2);
        System.out.println("当前日期减2个月后,时间是:" + calendar.getTime());
    }
}

以上四个类是老API,现在用的不是很多,下面是java8以后新出的API。

java.time

java.time 中包含了所有关于本地日期(LocalDate)、本地时间(LocalTime)、本地日期(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。历史悠久的 Date 类新增了 toInstant() 方法,用于把 Date 转换成新的表示形式。这些新增的本地化时间日期 API 大大简化了日期时间和本地化的管理

java.time除了本身的基础包,还有四个包:

  • java.time.chrono 提供对不同的日历系统的访问
  • java.time.format 格式化和解析时间和日期
  • java.time.temporal 包括底层框架和扩展特性
  • java.time.zone 包括时区支持的类

日常开发中只需要用到基础包与format包,偶尔需要使用temporal包。

time包中有三个常用的类:

  • LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存储生日、纪念日等日期
  • LocalTime表示一个时间,而不是日期
  • LocalDateTime是用来表示日期和时间的,这是一个最常用的类。
    在这里插入图片描述
瞬时

time包中有一个概念叫做瞬时(instant),被用来记录应用程序中的时间戳。

他可以直接从时间线上取出一个点,精度达到纳秒级别,不需要提供上下文信息。
在这里插入图片描述

Java小白修炼手册

java.time.format.DateTimeFormatter类

这个类提供三种格式化方式

  • 预定义的格式

    ISO_LOCAL_DATE_TIME

    ISO_LOCAL_DATE

    ISO_LOCAL_TIME

  • 本地化相关的格式

    ofLocalizedDateTime(FormatStyle.LONG)

  • 自定义格式

    ofPattern(“yyyy-MM-dd hh:mm:ss”)

常用方法:

  • ofPattern(String pattern)

    返回一个指定字符串格式的时间

  • format(TemporalAccessor t)

    格式化一个日期、时间,返回字符串

  • parse(CharSequence text)

    将格式化字符序列解析为一个日期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值