首页 > 编程语言 >【Java】—— 常用类和基础API:JDK8之前日期时间API的使用:Date、SimpleDateFormat、Calendar

【Java】—— 常用类和基础API:JDK8之前日期时间API的使用:Date、SimpleDateFormat、Calendar

时间:2024-09-29 22:22:13浏览次数:8  
标签:java System SimpleDateFormat util API Date Java Calendar public

目录

3. JDK8之前:日期时间API

3.1 java.lang.System类的方法

3.2 java.util.Date

3.3 java.text.SimpleDateFormat

3.4 java.util.Calendar(日历)

练习


3. JDK8之前:日期时间API

3.1 java.lang.System类的方法

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

    • 此方法适于计算时间差。

  • 计算世界时间的主要标准有:

    • UTC(Coordinated Universal Time)

    • GMT(Greenwich Mean Time)

    • CST(Central Standard Time)

    在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。这里,UTC与GMT含义完全相同。

3.2 java.util.Date

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

  • 构造器:

    • Date():使用无参构造器创建的对象可以获取本地当前时间。

    • Date(long 毫秒数):把该毫秒值换算成日期时间对象

  • 常用方法

    • getTime(): 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数

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

    • 其它很多方法都过时了。

  • 举例:

package exer1;

import org.junit.Test;

import java.util.Date;

/**
 * ClassName:IntelliJ IDEA
 * Description:
 *
 * @Author zyjstart
 * @Create:2024/9/28 16:22
 */
public class DateTimeTest {
    /**
     * Date类的使用
     *
     * /----java.util.Date
     *  >两个构造器的使用
     *  >两个方法的使用:① toString()   ② getTime()
     *
     *      /-----java.sql.Date:对应着数据库中的date类型
     */
    @Test
    public void test1(){
        Date date1 = new Date();    // 创建一个基于当前系统时间的Date的实例
        System.out.println(date1.toString());
        long time = date1.getTime();
        System.out.println("对应的毫秒数为:" + time);

        Date date2 = new Date(1727511995636L);  //创建一个基于指定时间戳的Date的实例
        System.out.println(date2.toString());


    }
}

运行结果:

3.3 java.text.SimpleDateFormat

  • java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。

  • 可以进行格式化:日期 --> 文本

  • 可以进行解析:文本 --> 日期

  • 构造器:

    • SimpleDateFormat() :默认的模式和语言环境创建对象

    • public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象

  • 格式化:

    • public String format(Date date):方法格式化时间对象date

  • 解析:

    • public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期

示例:

package exer1;

import org.junit.Test;

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

/**
 * ClassName:IntelliJ IDEA
 * Description:
 *
 * @Author zyjstart
 * @Create:2024/9/28 16:46
 */
public class SimpleDateTest {
    /**
     * SimpleDateFormat类:用于日期时间的格式化和解析
     *
     * 格式化:日期 -> 字符串
     * 解析: 字符串 -> 日期
     */
    @Test
    public void test3() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat();  // 空参构造器,使用默认格式
        // 格式化:日期 -> 字符串
        Date date1 = new Date();
        String strDate = sdf.format(date1);
        System.out.println(strDate);


        // 解析: 字符串 -> 日期
        Date date2 = sdf.parse("24-9-28 下午4:49");
        System.out.println(date2);
    }
}

运行结果:

3.4 java.util.Calendar(日历)

  • Date类的API大部分被废弃了,替换为Calendar。

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

  • 获取Calendar实例的方法

    • 使用Calendar.getInstance()方法

    • 调用它的子类GregorianCalendar(公历)的构造器。

  • 一个Calendar的实例是系统时间的抽象表示,可以修改或获取 YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND等 日历字段对应的时间值。

    • public int get(int field):返回给定日历字段的值

    • public void set(int field,int value) :将给定的日历字段设置为指定的值

    • public void add(int field,int amount):根据日历的规则,为给定的日历字段添加或者减去指定的时间量

    • public final Date getTime():将Calendar转成Date对象

    • public final void setTime(Date date):使用指定的Date对象重置Calendar的时间

  • 常用字段

  • 注意:

    • 获取月份时:一月是0,二月是1,以此类推,12月是11

    • 获取星期时:周日是1,周二是2 , 。。。。周六是7

  • 示例代码:

package exer1;

import org.junit.Test;

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

/**
 * ClassName:IntelliJ IDEA
 * Description:
 *
 * @Author zyjstart
 * @Create:2024/9/28 18:10
 */
public class CalendarTest {
    /**
     * Calendar:日历类
     * ① 实例化 由于Calendar是一个抽象类,所以我们需要创建其子类的实例,这里我们通过Calendar的静态方法
     *          getInstance()即可获取
     * ② 常用方法:get(int field) /  set(int field, xx) /  add(int field,xx)  /  getTime()  /  setTime()
     */
    @Test
    public void test(){
        Calendar calendar = Calendar.getInstance();

        System.out.println(calendar.getClass());    // 查看当前对象类是谁

        //测试方法
        // get(int field)
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//今天是这个月的第几天
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));// 今天是这年的第几天

        //set(int field, xx)
        calendar.set(Calendar.DAY_OF_MONTH,15); // 将今天是这个月的第几天改为15
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));

        //add(int field,xx)
        calendar.add(Calendar.DAY_OF_MONTH,3);  // 在原有的基础上加上3天
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));

        // getTime() : Calendar -->  Date
        Date time = calendar.getTime();
        System.out.println(time);

        // setTime():使用指定的Date重置Calendar
        Date date = new Date();
        calendar.setTime(date);  // 被重置了,下列输出为当前系统,是这个月的多少天
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
    }
}

输出示例:

练习

1、如何将一个java.util.Date的实例转换为java.sql.Date的实例

package exer1;

import org.junit.Test;

import java.util.Date;

/**
 * ClassName:IntelliJ IDEA
 * Description:
 *
 * @Author zyjstart
 * @Create:2024/9/28 18:35
 */
public class Exer01 {
    /**
     * 练习:如何将一个java.util.Date的实例转换为java.sql.Date的实例
     *
     */
    @Test
    public void test(){
        Date date1 = new Date();

        java.sql.Date date2 = new java.sql.Date(date1.getTime());
        System.out.println(date2);
    }

}

运行结果:

2、拓展

将控制台获取的年月日(比如:2022-12-16)的字符串数据,转换为java.sqL.Date的对象
(字符串 --> java.util.Date --> java.sql.Date)
package exer1;

import org.junit.Test;

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

/**
 * ClassName:IntelliJ IDEA
 * Description:
 *
 * @Author zyjstart
 * @Create:2024/9/28 18:51
 */
public class Exer02 {
    /**
     * 拓展:
     *      将控制台获取的年月日(比如:2022-12-16)的字符串数据,转换为java.sqL.Date的对象
     *      字符串 --> java.util.Date --> java.sql.Date
     */
    @Test
    public void test() throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 指定格式
        String patter = "2022-12-16";
        // 得到java.util.Date的结果,解析:字符串 --> java.util.Date
        Date date1 = sdf.parse(patter);
        // 转换为java.sql.Date
        java.sql.Date date2 = new java.sql.Date(date1.getTime());
        System.out.println(date2);
    }
}
    

标签:java,System,SimpleDateFormat,util,API,Date,Java,Calendar,public
From: https://blog.csdn.net/weixin_63106307/article/details/142617778

相关文章

  • Java Deeplearning4j:构建和训练卷积神经网络(CNN)模型
    ......
  • JavaScript
    什么是JavaScript?JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言(脚本语言是不需要编译,直接通过浏览器的解释就可以运行)。是用来控制网页行为的,它能使网页可交互。JavaScript和Java是完全不同的语言,不论是概念还是设计。但是基础语法类似。JavaScript在1......
  • Java的原码、反码和补码
    在Java中,原码、反码和补码是用来表示整数的三种不同的编码方式。这三种编码方式分别用来表示正数、负数以及0。原码:原码是整数的最基本的表示方式,它直接将整数的二进制表示出来。原码的表示方法是,最高位表示符号位(0表示正数,1表示负数),其余位表示整数的绝对值的二进制表示。......
  • 计算机毕业设计-基于Java+SSM架构的程序设计课程可视化教学系统项目开发实战(附源码+
    大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。......
  • 解决steam_api64.dll缺失问题,让你的Steam游戏顺畅运行
    解决steam_api64.dll缺失问题,让你的Steam游戏顺畅运行在享受Steam平台带来的丰富游戏体验时,偶尔会遇到一些令人头疼的技术问题,其中steam_api64.dll文件缺失便是常见的难题之一。这个文件作为Steam游戏平台的核心组件,一旦出现问题,可能导致游戏无法启动或系统报错。本文将详......
  • Java中流的学习
    流的基本概念目录流的基本概念一、流的基本概念二、流的分类三、流的使用场景四、流的特性Java中关于流(Stream)的知识是一个广泛而深入的主题,它涵盖了Java标准库中用于处理输入输出(IO)的多种抽象和类。以下是对Java流知识的详细归纳:一、流的基本概念定义:Java流是Java标准库中......
  • java管理系统
    一、考试要求:1、按照测试内容要求完成程序的设计与编程;2、建立学号姓名文件夹,如:“20234215柳泽羽”,将源程序文件、保存在文件夹中,压缩成rar文件提交。3、以班级为单位上交最终考试结果。4、需要在程序开始的注释中注明班级、学号、姓名。二、系统背景:某机械有限公司为了实现......
  • Java中的队列数据结构及其应用
    Java中的队列数据结构及其应用队列是一种线性数据结构,遵循先进先出(FIFO)的原则,即最先插入的元素最先被移除。队列的基本操作包括入队(enqueue)、出队(dequeue)和查看队头元素(peek)。本文将介绍队列的基本结构、操作及在JDK中的应用。队列的基本结构一个简单的队列可以用数组或......
  • Java 事务隔离级别及相关概念
    Java事务隔离级别及相关概念在数据库管理系统中,事务的隔离级别定义了一个事务与其他事务之间的相互影响程度。Java中的事务隔离级别主要遵循SQL标准,主要包括以下四种:读未提交(ReadUncommitted):允许读取未提交的数据,可能导致脏读(DirtyRead)。这是最低的隔离级别。读已......
  • 【Web APIs day 03 事件流、事件委托、其他事件:优化多个事件绑定和实现常见网页交互】
    WebAPIs-第3天目标:学习事件流,事件委托,其他事件等知识,优化多个事件绑定和实现常见网页交互事件流移除事件监听其他事件元素尺寸与位置综合案例事件流为什么要学习事件流?可以帮我们解决一些疑惑,比如点击子盒子会会弹出2次的问题事件流指的是事件完整执行过程中的......