新手小白学JAVA 日期类Date SimpleDateFormat Calendar(入门)

目录
  • 1. Date日期类
    • 1.1 Date的构造函数
    • 1.2 Date的构造函数练习
    • 1.3 Date的常用方法练习
  • 2. SimpleDateFormat
    • 2.1 常用构造函数
    • 2.2 日期转换格式工具类练习
    • 2.3 日期转换综合练习
  • 3.Calendar日历类
    • 3.1 概念
    • 3.2 常用方法
    • 3.3 入门案例
    • 3.4 巩固案例

1. Date日期类

类 Date 表示一个特定的瞬间,精确到毫秒

1.1 Date的构造函数

Date() 分配一个 Date 对象,以表示分配它的时间(精确到毫秒)
Date(long date) 分配一个 Date 对象,表示自从标准基准时间起指定时间的毫秒数
标准基准时间:称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00

1.2 Date的构造函数练习

创建包:cn.cxy.date
创建类:TestDate1

package cn.cxy.date;

import java.util.Date;

/*本类用于Date的入门*/
public class TestDate1 {
    public static void main(String[] args) {
        //1.利用无参构造创建Date类对象,注意导包:import java.util.Date;
        Date d1= new Date();
        System.out.println(d1);//Thu Sep 23 23:14:59 CST 2021

        //2.利用含参构造创建Date对象
        long t = 1000*60*60;//1000ms*60*60->1min*60->1h
        Date d2 = new Date(t);//从标准基础时间1970-1-1-00:00开始往后数1h
        System.out.println(d2);//Thu Jan 01 09:00:00 CST 1970
        //CST是中国时区,所以额外加了8h变成了09:00:00
    }
}

常用时间缩写
GMT 格林尼治时间 = UTC 协调世界时间
UTC + 时区差 = 本地时间,我们是在东八区,东加西减,所以
CST 中国标准时间:China Standard Time UT+8:00

1.3 Date的常用方法练习

getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒值
setTime(long time) 设置时间,表示 1970 年 1 月 1 日 00:00:00 GMT 后的毫秒值

创建包:cn.cxy.date
创建类:TestDate2

package cn.cxy.date;

import java.util.Date;

/*本类用于Date的常用方法测试*/
public class TestDate2 {
    public static void main(String[] args) {
        //1.创建Date对象
        Date d1 = new Date();
        //2.获取从标准基准时间到现在时间的毫秒值,是一个时间差
        System.out.println(d1.getTime());//1632404114206
        //*1.0是为了变成浮点型,/1000变成秒,/60变成分,/60变成小时,/24变成天,/365变成年
        System.out.println(d1.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365);//约等于51,从1970到2021

        //3.打印d1就是当前的时间
        System.out.println(d1);//Thu Sep 23 21:39:29 CST 2021
        //4设置一个long值,作为毫秒为单位的时间差
        long t = 1000*60*60;
        d1.setTime(t);
        System.out.println(d1);//打印的就是从标准基准时间经过时间差t的时间
    }
}

2. SimpleDateFormat

SimpleDateFormat 常用于格式化和解析日期
日期和时间格式由日期和时间模式字符串指定,字母与日期时间的对应关系如下:

2.1 常用构造函数

SimpleDateFormat() 用默认模式的日期格式构造 SimpleDateFormat
SimpleDateFormat(String pattern) 用给定模式的日期格式构造 SimpleDateFormat

2.2 日期转换格式工具类练习

创建包:cn.cxy.date
创建类:TestSDF.java

package cn.cxy.date;

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

/*本类用于测试SimpleDateFormat类*/
public class TestSDF {
    public static void main(String[] args) throws ParseException {
        /*01 格式化:从 Date 到 String*/
        //1.创建日期类对象,包含当前的时间
        Date d = new Date();
        //2.创建日期转换工具类的对象,此时使用的是无参构造
        //SimpleDateFormat sdf = new SimpleDateFormat();
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
        //3.通过刚刚创建好的工具类对象转换日期的格式
        String s = sdf2.format(d);
        //4.打印转换好的时间字符串:
        //默认时间格式:21-9-23 下午11:18
        //自定义时间格式:2021/09/23 10:21:39
        System.out.println(s);

        /*解析:从String到 Date*/
        //1.定义一个时间字符串
        String s2 = "2021/9/23 22:24:03";
        //报错:ParseException解析异常: Unparseable date不可分割日期: "2021/9/23 22:24:03"
        //SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
        //2.利用含参构造创建工具类对象,指定格式,注意必须是规定格式,否则会抛出异常
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
        //3.利用工具类对象对日期进行转换
        Date d2= sdf3.parse(s2);
        //4.打印转换好的日期
        System.out.println(d2);//Thu Sep 23 22:24:03 CST 2021

    }
}

2.3 日期转换综合练习

创建包:cn.cxy.date2
创建工具类:DateUtils.java

package cn.cxy.date2;

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

/*本类用作日期类的工具类,一般工具类的要求:
* 构造方法私有化 & 成员方法静态化*/
public class DateUtils {
    //1.创建一个私有化的构造方法
    private DateUtils(){}

    //2.创建一个将日期转换为字符串的方法
    //参数:日期对象Date  日期转换的格式:format 返回值类型:String
    public static String dateToString(Date date, String format){
        //1.通过传入的日期格式,创建指定的工具类对象
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        //2.通过工具类对象将字符串转换为对应的日期字符串,并拿到转换后的字符串结果
        String s = sdf.format(date);/*转换*/
        //3.将最终转换的字符串结果返回
        return s;
    }

    //3.创建一个将字符串转换为日期的方法
    //参数:字符串对象String  日期转换的格式:format 返回值类型:Date
    public static Date stringToDate(String s, String format) throws ParseException {
        //1.通过传入的日期格式,创建指定的工具类对象
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        //2.通过工具类对象将日期对象转换为对应的字符串,并拿到转换后的日期对象
        Date d = sdf.parse(s);/*解析*/
        //3.将最终转换的日期对象作为方法的结果返回
        return d;
    }
}

创建包:cn.cxy.date2
创建测试类:TestDate.java

package cn.cxy.date2;

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

/*本类用于自定义日期工具类的测试类*/
public class TestDate {
    public static void main(String[] args) throws ParseException {
        //1.创建日期类对象
        Date d = new Date();
        //2.调用自定义日期工具类的功能:将日期对象转换成字符串
        String s = DateUtils.dateToString(d, "yyyy年MM月dd日 HH:mm:ss");
        String s2 = DateUtils.dateToString(d, "yyyy年MM月dd日");
        String s3 = DateUtils.dateToString(d, "HH:mm:ss");
        System.out.println(s);//2021年09月23日 10:55:32
        System.out.println(s2);//2021年09月23日
        System.out.println(s3);//10:58:21

        //3.调用自定义工具类的功能,将字符串转换为对应的日期对象
        //注意,此处的format格式必须与s字符串定义时的格式一致!!!否则转换会报错!
        Date d2 = DateUtils.stringToDate(s, "yyyy年MM月dd日 HH:mm:ss");
        System.out.println(d2);//Thu Sep 23 23:01:21 CST 2021
    }
}

3.Calendar日历类

3.1 概念

Calendar 类是一个抽象类,不可直接实例化,但是它有一个直接已知子类GregorianCalendar
它为特定瞬间与还有比如年月日等日历字段之间的转换和操作提供了一些方法

3.2 常用方法

Calendar提供了一个方法getInstance()用于获取Calendar对象,它的日历字段就是当前的日期

int get(int field) 返回给定日历字段的值
abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值

3.3 入门案例

创建包:cn.cxy.date3
创建类:TestCalendar.java

package cn.cxy.date3;

import org.junit.Test;

import java.util.Calendar;

/*本类用于练习日历类*/
public class TestCalendar {
    @Test
    public void TestGet(){
        //1.获取日历对象
        Calendar c = Calendar.getInstance();
        System.out.println(c);//能获取很多信息,比如MONTH=8,我们现在是9月,说明月份是从0开始的
        //2.通过获取到的日历对象,调用get(),传入对应的日历字段,就可以拿到对应的值
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int day = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(year + "年" + month + "月" + day + "日");//2021年9月24日
    }
    @Test
    public void TestAdd1(){
        //1.获取日历对象
        Calendar c = Calendar.getInstance();
        //2.给指定的日历字段进行指定数目的加减操作,得到10年后的今天
        c.add(Calendar.YEAR,+10);

        //3.通过获取到的日历对象,调用get(),传入对应的日历字段,就可以拿到对应的值
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int day = c.get(Calendar.DAY_OF_MONTH);
        //4.打印的就是10年后的今天:2031年9月24日
        System.out.println(year + "年" + month + "月" + day + "日");
    }

    @Test
    public void TestAdd2(){//需求:打印1年后的7天后
        //1.获取日历对象
        Calendar c = Calendar.getInstance();
        //2.给指定的日历字段进行指定数目的加减操作,得到10年后的今天
        c.add(Calendar.YEAR,+1);
        c.add(Calendar.DAY_OF_MONTH,+7);

        //3.通过获取到的日历对象,调用get(),传入对应的日历字段,就可以拿到对应的值
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int day = c.get(Calendar.DAY_OF_MONTH);
        //4.打印1年后的7天后:2022年10月1日
        System.out.println(year + "年" + month + "月" + day + "日");
    }

    @Test
    public void TestSet(){
        //1.获取日历对象
        Calendar c = Calendar.getInstance();
        //2.测试set方法
        c.set(2099,9,1);
        //3.通过获取到的日历对象,调用get(),传入对应的日历字段,就可以拿到对应的值
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int day = c.get(Calendar.DAY_OF_MONTH);
        //4.打印:2099年10月1日
        System.out.println(year + "年" + month + "月" + day + "日");
    }
}

3.4 巩固案例

创建包:cn.cxy.date3
创建类:TestCalendar.java
需求:用户任意输入一个年份,输出这年的2月有多少天

package cn.cxy.date3;

import java.util.Calendar;
import java.util.Scanner;

/*本类用于日历类的巩固练习
 * 需求:获取任意一年的2月有多少天*/
public class TestFeb {
    public static void main(String[] args) {
        //1.提示并接收用户要测试的年份:
        System.out.println("请您输入要查询的年份:");
        int year = new Scanner(System.in).nextInt();
        //2.获取日历类对象,并将时间设置为用户输入那年的3月1日
        Calendar c = Calendar.getInstance();
        c.set(year, 2, 1);
        //3.三月一日往前推一天就是2月的最后一天
        c.add(Calendar.DATE, -1);
        //4.获取这一天输出即可
        int date = c.get(Calendar.DATE);
        System.out.println(year + "年的2月有" + date + "天");
    }
}

到此这篇关于新手小白学JAVA 日期类Date SimpleDateFormat Calendar(入门)的文章就介绍到这了,更多相关JAVA Date SimpleDateFormat Calendar内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java时区处理之Date,Calendar,TimeZone,SimpleDateFormat的区别于用法

    一.概述 1.问题描述 使用Java处理时间时,我们可能会经常发现时间不对,比如相差8个小时等等,其真实原因便是TimeZone.只有正确合理的运用TimeZone,才能保证系统时间无论何时都是准确的.由于我在外企工作,服务器在美国,美国也有很多时区,经常会碰到向处于不同时区的服务器发请求时需要考虑时区转换的问题.譬如,服务器位于西八区(GMT-8:00),而身处东八区的用户想要查询当天的销售记录.则需把东八区的"今天"这个时间范围转换为服务器所在时区的时间范围. 2.时区认识 GMT

  • 新手小白学JAVA 日期类Date SimpleDateFormat Calendar(入门)

    目录 1. Date日期类 1.1 Date的构造函数 1.2 Date的构造函数练习 1.3 Date的常用方法练习 2. SimpleDateFormat 2.1 常用构造函数 2.2 日期转换格式工具类练习 2.3 日期转换综合练习 3.Calendar日历类 3.1 概念 3.2 常用方法 3.3 入门案例 3.4 巩固案例 1. Date日期类 类 Date 表示一个特定的瞬间,精确到毫秒 1.1 Date的构造函数 Date() 分配一个 Date 对象,以表示分配它的时间(精确到毫

  • 新手小白学JAVA IDEA下载使用手册全集

    IDEA 新手使用手册 1 简介 IDEA的全称是IntelliJ IDEA,这是一个java编程语言开发的集成环境. IDEA的每一个方面都是为了最大限度地提高开发人员的工作效率而设计的,它的智能编码辅助和人机工程学设计会让开发过程变得愉悦且高效. IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主.它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等.免费版只支持Java,Kotlin等少数语言. Intell

  • JAVA新手小白学正则表达式、包装类、自动装箱/自动拆箱以及BigDecimal

    目录 1正则表达式Regex 1.1概述 1.2常见语法 1.3String提供了支持正则表达式的方法 1.4练习:测试输入身份证号 2包装类 2.1与基本类型的对应关系 2.2Number 2.3Integer创建对象 2.4练习:Number之Integer 2.5Double 2.5练习:Number之Double 3自动装箱和自动拆箱 3.1概述 3.2练习:自动装箱与自动拆箱测试 4BigDecimal 4.1创建对象 4.2常用方法 4.3练习:测试常用方法 5拓展 总结 1 正则表

  • Java时间类Date类和Calendar类的使用详解

    起因:写代码的时候经常会用到获取当前时间戳和日期,现总结如下 public void testDate() { //SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 Date date = new Date(); String dateString = date.toString(); long times = date.getTime(); System.out.println("date.t

  • C++实现日期类(Date类)的方法

    如下所示: #include<iostream> using namespace std; class Date { public: Date(int year = 1900, int month = 1, int day = 1) //构造 :_year(year) , _month(month) , _day(day) { if (!isInvalidDate(_year, _month, _day)) { _year = 1900; _month = 1; _day = 1; } } D

  • C++日期类(Date)实现的示例代码

    目录 类的定义 确定某年某月有多少天 构造函数 打印日期 日期+=天数 日期+天数 日期-=天数 日期-天数 前置++ 后置++ 后置– 前置– >运算符重载 ==运算符重载 >=运算符重载 <运算符重载 <=运算符重载 !=运算符重载 计算两个日期之间的间隔天数,日期减去日期 类的定义 #pragma once #include < iostream> using std::cout; using std::cin; using std::endl; class Da

  • 详解Java中的日期类

    Java 编程语言中时间的处理类有 Date类与 Calendar类.目前官方不推荐使用 Date类,因为其不利于国际化:而是推荐使用 Calendar类,并使用 DateFormat 类做格式化处理. 一.Date 类介绍 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串. 不过,这些函数的 API 不易于实现国际化.从 JDK 1.1 开始,应该使用 Calenda

  • Java常用类之日期相关类使用详解

    目录 日期相关类 1.Date类 2.DateFormat类 3.Calendar类 日期相关类 1.Date类 在标准Java类库中包含一个Date类,它的对象表示一个特定的瞬间,精确到毫秒.在网上商城下单时,在对报销单进行审核时,都需要获取当前的时间,通过Date类就可以完成. 例子:Date类的使用 package li.normalclass.date; import java.util.Date; public class TestDate { public static void m

  • 一文搞懂Java中的日期类

    目录 一.日期类 1.1 第一代日期类 1.2 第二代日期类Calendar 1.3 第三代日期类 一.日期类 在程序的开发中我们经常会遇到日期类型的操作,Java对日期类型的操作提供了很好的支持.在最初的版本下,java.lang包中的System.currentTimeMillis();可以获取当前时间与协调时间(UTC)1970年1月1日午夜之间的时间差(以毫秒为单位测量).我们往往通过调用该方法计算某段代码的耗时. public class TestTime { public stati

  • Java中常用的日期类图文详解

    目录 前言 Date 为什么Date的大部分方法被弃用 注释 翻译 目前可用方法的测试示例 可用方法 示例 Date小结 Calendar 简单介绍 常用的方法 获取实例 获取日期里的信息 日期的加减与滚动 日期的设置 测试实例代码 DateFormat与SimpleDateFormat DateFormat 常用方法 测试实例 SimpleDateFormat 主要方法 测试示例 编写一个简单的日期工具类 工具类 测试示例 总结 前言 本文将分析Java中的Date.Calendar.Date

随机推荐