文章目录

  • Date类
    • 概述
    • 常用方法
    • 代码演示
  • DateFormat类
    • 构造方法
    • 格式规则
    • 常用方法
    • 代码演示
  • Calendar类
    • 概念
    • 获取方式
    • 常用方法
      • get/set方法
      • add方法
      • getTime方法
    • 代码演示

Date类

概述

java.util.Date类 表示特定的瞬间,精确到毫秒。

继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。

  • public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
  • public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。

tips: 由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。

简单来说:使用无参构造,可以自动设置当前系统时间的毫秒时刻;指定long类型的构造参数,可以自定义毫秒时刻。例如:

import java.util.Date;public class Demo01Date {public static void main(String[] args) {// 创建日期对象,把当前的时间System.out.println(new Date()); // Tue Jan 16 14:37:35 CST 2018// 创建日期对象,把当前的毫秒值转成日期对象System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970}
}

常用方法

Date类中的多数方法已经过时,常用的方法有:

  • public long getTime() 把日期对象转换成对应的时间毫秒值。

代码演示

public class Demo01Date {public static void main(String[] args) {demo01();demo02();demo03();}/*Date类的成员方法Long getTime()把日期转换为毫秒相对于原点1970.1.1 08:00:00*/private static void demo03() {Date date = new Date();long time = date.getTime();System.out.println("Date的成员方法getTime:");System.out.println(time);}/*Date类带参构造方法:Date(long date):将毫秒值转换为日期 - 相对于原点1970.1.1 08:00:00*/private static void demo02() {Date d1 = new Date(0L);//日期原点,1970.1.1Date d2 = new Date(666666666L);System.out.println("Date类有参构造方法:");System.out.println(d1);System.out.println(d2);}/*Date类空参构造方法:Date()获取当前系统的日期和时间*/private static void demo01() {System.out.println("Date类空参构造方法:");Date d1 = new Date();System.out.println(d1);}}

DateFormat类

java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

  • 格式化:按照指定的格式,从Date对象转换为String对象。
  • 解析:按照指定的格式,从String对象转换为Date对象。

构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:

  • public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。

参数pattern是一个字符串,代表日期时间的自定义格式。

格式规则

常用的格式规则为:

标识字母(区分大小写) 含义
y
M
d
H
m
s

备注:更详细的格式规则,可以参考SimpleDateFormat类的API文档0。

常用方法

DateFormat类的常用方法有:

  • public String format(Date date):将Date对象格式化为字符串。
  • public Date parse(String source):将字符串解析为Date对象。

代码演示

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Demo02DateFormat {public static void main(String[] args) {demo01();demo02();}/*使用DateFromat类中的方法parse,把文本转换为日期Date parse() 把符合模式的字符串转换为日期*/private static void demo02() {System.out.println("---------------------demo02-----------------------");//1.创建SimpleDateFormat 对象,构造方法中传递指定的参数SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String text = "2020-05-20 22:01:43";//2.调用parse方法,按照指定模式将文本转换为日期/*public Date parse(String source) throws ParseException 由于parse方法声明了一个异常,所以在调用时必须处理这个异常* */try {Date date = sdf.parse(text);System.out.println(date);} catch (ParseException e) {e.printStackTrace();}}/*使用DateFromat类中的方法format,把日期格式化为文本String format(Date date) 按照指定的模式,把date日期格式化为符合模式的字符串*/private static void demo01() {System.out.println("---------------------demo01-----------------------");//1.创建SimpleDateFormat 对象,构造方法中传递指定的参数SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//2.调用SimpleDateFormat对象中的format方法,按照构造方法中的参数模式,把date转换为指定模式的文本Date date = new Date();String text = sdf.format(date);System.out.println("日期未转换为指定模式的文本之前:");System.out.println(date);System.out.println("日期转换为指定模式的文本之后:");System.out.println(text);}
}

Calendar类

概念

日历我们都见过

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X2bhR4PX-1590070230265)(img\日历.jpg)]

java.util.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。

获取方式

Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,如下:

Calendar静态方法

  • public static Calendar getInstance():使用默认时区和语言环境获得一个日历

例如:

import java.util.Calendar;public class Demo06CalendarInit {public static void main(String[] args) {Calendar cal = Calendar.getInstance();}
}

常用方法

根据Calendar类的API文档,常用方法有:

  • public int get(int field):返回给定日历字段的值。
  • public void set(int field, int value):将给定的日历字段设置为给定值。
  • public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

Calendar类中提供很多成员常量,代表给定的日历字段:

字段值 含义
YEAR
MONTH 月(从0开始,可以+1使用)
DAY_OF_MONTH 月中的天(几号)
HOUR 时(12小时制)
HOUR_OF_DAY 时(24小时制)
MINUTE
SECOND
DAY_OF_WEEK 周中的天(周几,周日为1,可以-1使用)

get/set方法

get方法用来获取指定字段的值,set方法用来设置指定字段的值

add方法

add方法可以对指定日历字段的值进行加减操作,如果第二个参数为正数则加上偏移量,如果为负数则减去偏移量。

getTime方法

Calendar中的getTime方法并不是获取毫秒时刻,而是拿到对应的Date对象。

代码演示

import java.util.Calendar;
import java.util.Date;public class Demo01Calendar {public static void main(String[] args) {demo01();demo02();demo03();demo04();}/*public final Date getTime() :返回一个表示此Clendar的时间值的Date对象把日历对象转换为日期对象*/private static void demo04() {System.out.println("-----------------------demo04----------------------");Calendar c = Calendar.getInstance();//把日历对象转换为日期对象Date date = c.getTime();System.out.println(date);}/*public abstract void add(int field, int amount):根据日历的规则,为给定的字段添加或减去指定的时间量参数:int field:传递指定的字段(YEAR,MONTH,DATE....)int amount:增加/减少的值正数:增加负数:减少*/private static void demo03() {System.out.println("-----------------------demo03----------------------");Calendar c = Calendar.getInstance();//年份+2c.add(Calendar.YEAR,2);//月份-2c.add(Calendar.MONTH,-2);//日+5c.add(Calendar.DATE,5);int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH);int date = c.get(Calendar.DATE);System.out.println("今天是"+year+"年"+(month+1)+"月"+date+"日");}/*public void set(int field, int value):将指定的日历字段设定为给定值参数:int field:传递指定的日历字段(YEAR,MONTH,DATE.....)int value:设置传递的字段的具体值*/private static void demo02() {System.out.println("-----------------------demo02----------------------");Calendar c = Calendar.getInstance();
//        //设置年为6666
//        c.set(Calendar.YEAR,6666);
//        //设置月为6
//        c.set(Calendar.MONTH,6);
//        //设置日为6
//        c.set(Calendar.DATE,6);//使用set的重载方法同时设置年月日c.set(6666,6,6);int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH);int date = c.get(Calendar.DATE);System.out.println("今天是"+year+"年"+month+"月"+date+"日");}/*public int get(int field):返回给定日历字段的值参数:传递指定的日历字段(YEAR,MONTH,DATE......)返回值:日历字段代表具体的值*/private static void demo01() {System.out.println("-----------------------demo01----------------------");//由于Calendar是个抽象类,所以使用getInstance()方法获取Clendar对象Calendar c = Calendar.getInstance();int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH);//由于西方的月份是0-11,所以要+1int date = c.get(Calendar.DATE);System.out.println("今天是"+year+"年"+(month+1)+"月"+date+"日");}
}

(Java常用类)日期时间类相关推荐

  1. Day640.Java 8的日期时间类问题 -Java业务开发常见错误

    Java 8的日期时间类问题 Hi,阿昌来也! 今天记录分享的是Java 8的日期时间类问题 在 Java 8 之前,我们处理日期时间需求时,使用 Date.Calender 和 SimpleDate ...

  2. Date类(日期时间类)219

    219节课堂笔记 1.概述:表示特定的时间 2.所在的类:java.util.Date(表示时间和日期的类) 类date标识特定的瞬间,精确到毫秒 3.毫秒的换算:1秒=1000毫秒 tips:不可以 ...

  3. 进阶 2 日期时间类

    文章目录 Date DateFormat类 练习 Calendar类 日期时间类 Date java.util.Date`类 表示特定的瞬间,精确到毫秒. java.util.Date:表示日期和时间 ...

  4. 构造一个日期类java_Java8 新日期时间类(1)

    Java.time 包的优势 使用Java8,新的日期时间API引入覆盖旧的日期时间API的以下缺点. 非线程安全 - java.util.Date不是线程安全的,因此开发者必须在使用日期处理并发性问 ...

  5. JavaSE10:日期时间类、java比较器、System类、Math类、大数类

    写在前面 常用类的学习结束了,现在就简单整理和通过一些小demo来巩固一下吧~ JDK8.0之前的日期时间类 1. java.lang.System类 System类提供的public static ...

  6. JAVA day13,14 API、Object类、日期时间类(long,Date,Calendar,DateFormat)、String类(字符串,可变长字符串)、正则表达式、包装类

    1.API API(Application Programming Interface),应⽤程序编程接⼝.Java API是⼀本程序员的"字 典",是JDK提供给我们使⽤的类的说 ...

  7. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)

    文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...

  8. Java日期时间类及计算

    1. Java中与日期相关的类 1.1 java.util包 类名 具体描述 Date Date对象算是JAVA中历史比较悠久的用于处理日期.时间相关的类了,但是随着版本的迭代演进,其中的众多方法都已 ...

  9. java中常用的日期工具类

    java中常用的日期工具类 日期相关的类: package net.yto.ofclacct.core.util;import java.text.ParseException; import jav ...

  10. java之进阶语法(Object类及日期时间类)

    一.关于Object类 (一)概述 java.lang.object类是java语言的根类,即是所有类的父类. 若一个类没有指定父类,那么默认继承自Object类 object类常用的方法有以下: - ...

最新文章

  1. 周志华等人新著!国内第一部AI本科专业教育培养体系出炉
  2. Javascript 严格模式详解
  3. Repeater利用PagedDataSource进行分页
  4. OpenCASCADE:Mac OS X平台使用Xcode构建OCCT
  5. multiprocessing.manager管理的对象需要加锁吗_iOS内存管理布局-理论篇
  6. 从 Nginx、Apache 工作原理看为什么 Nginx 比 Apache 高效!
  7. 数据库原理----学习目标
  8. mysql查询最小的id_Mysql查询表中最小可用id值的方法
  9. np.unique( )--去除数组中的重复数字,并进行排序之后输出
  10. 案例 显示分数 js
  11. RabbitMq(十三)消息发送确认与回调机制
  12. socket编程(二) select 模型
  13. redis aof 备份和恢复_深入理解Redis持久化
  14. ubuntu 下 maven安装
  15. CSDN 输入公式的方法
  16. SONIC 编译指南
  17. centos 7安装java 8
  18. mescroll vue使用
  19. Java项目Maven配置操作Pdf
  20. 用jquery1.9版本判断ie浏览器及ie6浏览器

热门文章

  1. C++ Primer 5th笔记(chap 17 标准库特殊设施)ECMAScript正则表达式
  2. Hyperledger Fabric 核心模块(2)configtxgen工具
  3. Hyperledger Fabric 管道(3) 如何做到数据隔离?
  4. 美国大学生数学建模竞赛赛题特点
  5. AI玩微信跳一跳的正确姿势:一不小心就超越了最高分,瞬间称霸了朋友圈~
  6. 01_SMC_Calling_Convention(SMCCC)
  7. 12-Generic Timer
  8. Android locksettings/gatekeeper代码导读
  9. Android keymaster4.0- device集成笔记
  10. Android Gatekeeper流程深度解剖