日期与时间【Date/SimpleDateFormat/Calendar】

yizhihongxing

视频链接:https://www.bilibili.com/video/BV1Cv411372m?p=121&vd_source=9140dcc493e34a9f4e95ca2f8f71bbd3

1 Data

1.1 Date类概述

  1. Date类的对象在java中代表的是当前所在系统的此刻日期时间。
  2. Date的构造器
    public Date():创建一个Date对象,代表的是系统当前此刻日期时间。
  3. Date的常用方法
    public long getTime():获取时间对象的毫秒值

1.2 Date类记录时间的2种形式

  1. 日期对象
//1、创建一个Date对象,代表的是系统当前此刻日期时间。
Date date =new Date();
System.out.println(date);  //Fri May 05 21:09:54 CST 2023
  1. 时间毫秒值
  • 指的是从1970年1月1日 00:00:00走到此刻的总的毫秒数
//2、获取时间毫秒值
long time = date.getTime();
System.out.println(time);   //1683292462323
long times = System.currentTimeMillis();
System.out.println(times);  //1683292462336

1.3 案例

  • 请计算出当前时间为往后走1小时121秒之后的时间是多少
  • 时间毫秒值→日期对象
    1. 构造器
      public Date(long time):把时间毫秒值转换成Date日期对象
    2. Date方法
      public void setTime(long time):设置日期对象的时间为当前时间毫秒值对应的时间
//构造器
long time = System.currentTimeMillis();
time += (60 * 60 + 121) *1000;
Date d2 = new Date(time);
System.out.println(d2);
//Date方法
Date d3 = new Date();
d3.setDate(time);
System.out.println(d3);

2 SimpleDateFormat

2.1 SimpleDateFormat概述

  • 可以对Date对象或时间毫秒值格式化我们喜欢的时间形式。
  • 可以把字符串的时间形式解析成对象格式
  • 格式化的时间形式的常用的模式
    • y-年;M-月;d-日;
    • H-时;m-分;s-秒;
    • EEE-星期几;a-上午/下午

1. SimpleDateFormat的构造器

构造器 说明
public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认格式
public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat,使用指定的格式
//1、日期对象
Date date = new Date();
System.out.println(date);  //Sat May 06 08:19:11 CST 2023
// 2、格式化这个日期对象(指定最终格式化的形式)   EEE 代表去星期几  a 取上午还是下午
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss  EEE a ");
// 3、开始格式化日期对象成为字符串的形式
String rs = sdf.format(date);
System.out.println(rs);  //2023年05月06日 08:19:11  星期六 上午
//4、格式化时间毫秒值
//需求:121秒之后的时间是多少
long time = System.currentTimeMillis()+121*1000;
String rs2 = sdf.format(time);
System.out.println(rs2);  //2023年05月06日 08:21:12  星期六 上午

2. SimpleDateFormat的格式化方法

格式化方法 说明
public final String(Date date) 将日期格式化成日期/时间字符串
public final String(Object time) 将时间毫秒值化成日期/时间字符串
例子:
3. SimpleDateFormat解析字符串时间成为日期对象
解析方法 说明
public Date pasre(String source) 从给定字符串的开始解析文本以生成日期
package com.example.test.simpledateformat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo02 {
    public static void main(String[] args) throws ParseException {
        //SimpleDateFormat解析字符串时间成为日期对象
        //计算出2021年08月06日11点11分11秒,往后走2天14小时49分06秒后的时间是多少??
        // 1、把字符串时间拿到程序中来
        String dateStr = "2021年08月06日 11:11:11";
        // 2、把字符串时间解析成日期对象 !!形式必须与被解析时间的形式完全一样,否则运行时解析报错
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date d = sdf.parse(dateStr);
        // 3、往后走2天14小时49分06秒
        long time = d.getTime() + (2L*24*60*60+14*60*60+49*60+6)*1000;
        // 4、格式化时间毫秒值
        String rs = sdf.format(time);
        System.out.println(rs);
    }
}

2.2 总结

  1. SimpleDateFormat可以格式化日期对象和时间毫秒值。
  2. SimpleDateFormat调用parse方法对字符串时间进行解析,要求解析格式必须与被解析格式一样。

2.4 案例

需求

  • 活动开始时间:2021-11-11 00:00:00
  • 活动结束时间:2021-11-11 00:10:00
  • 小贾下单并付款的时间为:2020年11月11日 00:03:47
  • 小皮下单并付款的时间为:2022年11月11日 00:10:11
  • 用代码说明这两位同学有没有参加上秒杀活动?
package com.example.test.simpledateformat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo03 {
    public static void main(String[] args) throws ParseException {
        // 1、开始和结束时间
        String startTime = "2021-11-11 00:00:00";
        String endTime = "2021-11-11 00:10:00";

        // 2、记录小贾,小皮
        String xiaoJia = "2021-11-11 00:03:47";
        String xiaoPi = "2021-11-11 00:10:11";

        // 3、解析时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d1 = sdf.parse(startTime);
        Date d2 = sdf.parse(endTime);
        Date d3 = sdf.parse(xiaoJia);
        Date d4 = sdf.parse(xiaoPi);
        if(d3.after(d1) && d3.before(d2)){
            System.out.println("小贾秒杀成功");
        }else{
            System.out.println("小贾秒杀失败");
        }
        if(d4.after(d1) && d4.before(d2)){
            System.out.println("小皮秒杀成功");
        }else{
            System.out.println("小皮秒杀失败");
        }
    }
}

3 Calendar

3.1 Calendar概述

  • Calendar代表了系统此刻日期对应的日历对象。
  • Calendar是一个抽象类,不能直接创建对象
    Calendar日历类创建日历对象的方法
    public static Calendar getInstance():获取当前日历对象

3.2 Calendar常用方法

方法名 说明
public int get(int field) 取日期中的某个字段信息
public void set(int field,int value) 修改日历中某个字段信息
public void add(int field,int amount) 为某个字段增加/减少指定值
public final Date getTime() 拿到此刻日期对象
public long getTimeMillis() 拿到此刻时间毫秒值

note:Calendar是可变日期对象,一旦修改后其对象本身表示的时间将产生变化。

3.3 案例

1. 案例1

package com.example.test.calendar;
import java.util.Calendar;
import java.util.Date;

public class Demo01 {
    public static void main(String[] args) {
        //1、拿到系统此刻日历对象
        Calendar cal = Calendar.getInstance();
        //2、 获取日期信息
        int year = cal.get(Calendar.YEAR);
        System.out.println(year);
        int month = cal.get(Calendar.MONTH)+1;
        System.out.println(month);
        int days = cal.get(Calendar.DAY_OF_YEAR);  //一年中的第几天
        System.out.println(days);
        // 3、修改日历中某个字段信息
        cal.set(Calendar.HOUR,12); //一般不会修改时间
        // 请问64天后是什么是时间
        cal.add(Calendar.DAY_OF_YEAR, 64);
        // 拿到此刻日期对象
        Date time = cal.getTime();
        System.out.println(time);
        // 拿到此刻日期毫秒值
        long times = cal.getTimeInMillis();
        System.out.println(times);
    }
}

2. 案例2:获取指定日期加某几月之后的日期

public class Demo02 {
    public static void main(String[] args) throws ParseException {
        String time = "2023-01-30";	//当前时间
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date currdate = format.parse(time);
        System.out.println("初始的时间是:" + time);
        Calendar ca = Calendar.getInstance();
        ca.setTime(currdate);
        ca.add(Calendar.MONTH, 1);
        currdate = ca.getTime();
        String enddate = format.format(currdate);
        System.out.println("增加天数以后的时间:" + enddate);
    }
}

原文链接:https://www.cnblogs.com/shionlingfan/p/17375424.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:日期与时间【Date/SimpleDateFormat/Calendar】 - Python技术站

(0)
上一篇 2023年5月6日
下一篇 2023年5月6日

相关文章

  • Java之经典排序算法

    Java之经典排序算法 本文将详细讲解 Java 中常见的经典排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序和堆排序等七种算法,并给出示例代码。 冒泡排序 冒泡排序是最简单的排序算法之一,基本思想是将相邻的元素两两比较,如果前一个元素比后一个元素大,就将它们两者交换位置。重复这个过程,直到整个序列有序为止。 下面是 Java 实现代…

    Java 2023年5月19日
    00
  • java 汉诺塔Hanoi递归、非递归(仿系统递归)和非递归规律 实现代码

    Java实现汉诺塔问题的递归解法 汉诺塔问题:有三根相邻的柱子,标号为a、b、c,其中a柱子上有n个直径大小各不相同的圆盘,按从小到大的顺序依次从上到下叠放。要把所有盘子一个一个移动到另一个柱子上,条件是每次只能移动一个盘子,且不能出现大盘压小盘的情况。 看到这个问题,我们第一时间可以想到递归。为了更好的理解递归,我们可以先从最简单的情况开始理解。 当只有1…

    Java 2023年5月19日
    00
  • Java中的对称加密详解

    Java中的对称加密详解 本文将详细讲解Java中对称加密的原理及实现方式。对称加密是一种加密方式,使用同一个密钥进行加密和解密,是数据安全传输中常用的一种方式。 对称加密的原理 对称加密使用同一把密钥进行加密和解密,一般分为如下三个步骤: 明文加密 密文传输 密文解密 使用一把密钥可以实现两个相同结构的模块进行数据通信时进行加解密操作。对称加密的优点是速度…

    Java 2023年5月19日
    00
  • java基础之数组常用操作总结(必看篇)

    Java基础之数组常用操作总结(必看篇) 一、什么是数组 数组是一种容器,用于存储固定大小的同类型元素序列。在Java中,数组是用连续的内存空间来存储相同类型的数据。 二、数组的定义 Java中使用[]来声明一个数组类型,且数组必须被初始化为一定数量的元素。数组的长度是不可变的。 dataType[] arrayName; // 声明数组 arrayName…

    Java 2023年5月26日
    00
  • Java中后台线程实例解析

    Java中后台线程实例解析 在Java中,线程可以分为前台线程和后台线程。前台线程是指主线程,后台线程是指与主线程并行执行但不会阻止主线程正常结束的线程。本文将详细讲解Java中后台线程的使用方法和示例说明。 后台线程的创建与启动 后台线程可以通过继承Thread类并覆盖run()方法来创建和启动。具体过程如下: public class Backgroun…

    Java 2023年5月18日
    00
  • Hibernate初体验及简单错误排除代码详解

    Hibernate初体验及简单错误排除代码详解 概述 Hibernate是一个开源的Java ORM框架,用于将Java中的对象映射到关系型数据库中的表中。使用Hibernate可以大大提高开发效率和代码可维护性。 本篇攻略将介绍如何在Java项目中使用Hibernate,并提供简单错误排除代码详解。 环境准备 在开始使用Hibernate之前,需要具备以下…

    Java 2023年5月20日
    00
  • 简单学懂链式编程

    简单学懂链式编程 一句话定义 链式编程是一种编程风格,它允许在同一个对象上通过多个方法的调用链实现一系列操作,从而简化代码,提高可读性,和代码的可维护性。 一个流程看懂 创建对象 -> 连续调用对象方法 -> 返回对象本身 -> 使用对象方法获取属性或执行其他操作。 示例 public class Person { private Stri…

    Java 2023年4月22日
    00
  • 带你走进Maven的大门-最全Maven配置及集成idea工具总结

    带你走进Maven的大门-最全Maven配置及集成idea工具总结 什么是Maven Maven是用于Java项目的构建工具,可以帮助我们管理项目依赖、打包和发布等工作。通过引入Maven的概念,我们可以将项目开发中的依赖管理的工作与项目本身的开发工作分离出来,大大提高项目构建和依赖管理的效率。 Maven的配置 环境变量的配置 首先需要配置Maven的环境…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部