(Java常用类)日期时间类
文章目录
- 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常用类)日期时间类相关推荐
- Day640.Java 8的日期时间类问题 -Java业务开发常见错误
Java 8的日期时间类问题 Hi,阿昌来也! 今天记录分享的是Java 8的日期时间类问题 在 Java 8 之前,我们处理日期时间需求时,使用 Date.Calender 和 SimpleDate ...
- Date类(日期时间类)219
219节课堂笔记 1.概述:表示特定的时间 2.所在的类:java.util.Date(表示时间和日期的类) 类date标识特定的瞬间,精确到毫秒 3.毫秒的换算:1秒=1000毫秒 tips:不可以 ...
- 进阶 2 日期时间类
文章目录 Date DateFormat类 练习 Calendar类 日期时间类 Date java.util.Date`类 表示特定的瞬间,精确到毫秒. java.util.Date:表示日期和时间 ...
- 构造一个日期类java_Java8 新日期时间类(1)
Java.time 包的优势 使用Java8,新的日期时间API引入覆盖旧的日期时间API的以下缺点. 非线程安全 - java.util.Date不是线程安全的,因此开发者必须在使用日期处理并发性问 ...
- JavaSE10:日期时间类、java比较器、System类、Math类、大数类
写在前面 常用类的学习结束了,现在就简单整理和通过一些小demo来巩固一下吧~ JDK8.0之前的日期时间类 1. java.lang.System类 System类提供的public static ...
- JAVA day13,14 API、Object类、日期时间类(long,Date,Calendar,DateFormat)、String类(字符串,可变长字符串)、正则表达式、包装类
1.API API(Application Programming Interface),应⽤程序编程接⼝.Java API是⼀本程序员的"字 典",是JDK提供给我们使⽤的类的说 ...
- 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 ...
- Java日期时间类及计算
1. Java中与日期相关的类 1.1 java.util包 类名 具体描述 Date Date对象算是JAVA中历史比较悠久的用于处理日期.时间相关的类了,但是随着版本的迭代演进,其中的众多方法都已 ...
- java中常用的日期工具类
java中常用的日期工具类 日期相关的类: package net.yto.ofclacct.core.util;import java.text.ParseException; import jav ...
- java之进阶语法(Object类及日期时间类)
一.关于Object类 (一)概述 java.lang.object类是java语言的根类,即是所有类的父类. 若一个类没有指定父类,那么默认继承自Object类 object类常用的方法有以下: - ...
最新文章
- 周志华等人新著!国内第一部AI本科专业教育培养体系出炉
- Javascript 严格模式详解
- Repeater利用PagedDataSource进行分页
- OpenCASCADE:Mac OS X平台使用Xcode构建OCCT
- multiprocessing.manager管理的对象需要加锁吗_iOS内存管理布局-理论篇
- 从 Nginx、Apache 工作原理看为什么 Nginx 比 Apache 高效!
- 数据库原理----学习目标
- mysql查询最小的id_Mysql查询表中最小可用id值的方法
- np.unique( )--去除数组中的重复数字,并进行排序之后输出
- 案例 显示分数 js
- RabbitMq(十三)消息发送确认与回调机制
- socket编程(二) select 模型
- redis aof 备份和恢复_深入理解Redis持久化
- ubuntu 下 maven安装
- CSDN 输入公式的方法
- SONIC 编译指南
- centos 7安装java 8
- mescroll vue使用
- Java项目Maven配置操作Pdf
- 用jquery1.9版本判断ie浏览器及ie6浏览器
热门文章
- C++ Primer 5th笔记(chap 17 标准库特殊设施)ECMAScript正则表达式
- Hyperledger Fabric 核心模块(2)configtxgen工具
- Hyperledger Fabric 管道(3) 如何做到数据隔离?
- 美国大学生数学建模竞赛赛题特点
- AI玩微信跳一跳的正确姿势:一不小心就超越了最高分,瞬间称霸了朋友圈~
- 01_SMC_Calling_Convention(SMCCC)
- 12-Generic Timer
- Android locksettings/gatekeeper代码导读
- Android keymaster4.0- device集成笔记
- Android Gatekeeper流程深度解剖