文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java日期时间类Date、DateFormat、Calendar怎么使用

2023-07-02 09:19

关注

这篇“Java日期时间类Date、DateFormat、Calendar怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java日期时间类Date、DateFormat、Calendar怎么使用”文章吧。

Date类

概述

java.util.Date类 表示特定的瞬间,精确到毫秒。 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。

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()); // Sun Apr 17 16:33:27 CST 2022        // 创建日期对象,把当前的毫秒值转成日期对象        System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970    }}

tips:在使用println方法时,会自动调用Date类中的toString方法。Date类对Object类中的toString方法进行了覆盖重写,所以结果为指定格式的字符串。

常用方法

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

DateFormat类

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

构造方法

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

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

格式规则

常用的格式规则为:

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

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

创建SimpleDateFormat对象的代码如:

import java.text.DateFormat;import java.text.SimpleDateFormat;public class Demo02SimpleDateFormat {    public static void main(String[] args) {        // 对应的日期格式如:2020-01-20 13:14:20        DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    }}

常用方法

DateFormat类的常用方法有:

format方法

使用format方法的代码为:

import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;public class Demo03DateFormatMethod {    public static void main(String[] args) {        Date date = new Date();        // 创建日期格式化对象,在获取格式化对象时可以指定风格        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");        String str = df.format(date);        System.out.println(str); // 2022年3月23日    }}

parse方法

使用parse方法的代码为:

import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Demo04DateFormatMethod {    public static void main(String[] args) throws ParseException {        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");        String str = "2021年12月11日";        Date date = df.parse(str);        System.out.println(date); // Tue Dec 11 00:00:00 CST 2021    }}

练习

请使用日期时间相关的API,计算出一个人已经出生了多少天。 思路:

代码实现:

public static void function() throws Exception {System.out.println("请输入出生日期 格式 yyyy-MM-dd");// 获取出生日期,键盘输入String birthdayString = new Scanner(System.in).next();// 将字符串日期,转成Date对象// 创建SimpleDateFormat对象,写日期模式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 调用方法parse,字符串转成日期对象Date birthdayDate = sdf.parse(birthdayString);// 获取今天的日期对象Date todayDate = new Date();// 将两个日期转成毫秒值,Date类的方法getTimelong birthdaySecond = birthdayDate.getTime();long todaySecond = todayDate.getTime();long secone = todaySecond-birthdaySecond;if (secone < 0){System.out.println("还没出生呢");} else {System.out.println("出生的天数:"+secone/1000/60/60/24);}}

Calendar类

概念

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

获取方式

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

例如:

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

常用方法

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

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方法用来设置指定字段的值,代码使用演示:

import java.util.Calendar;public class CalendarUtil {    public static void main(String[] args) {        // 创建Calendar对象        Calendar cal = Calendar.getInstance();        // 设置年        int year = cal.get(Calendar.YEAR);        // 设置月        int month = cal.get(Calendar.MONTH) + 1;        // 设置日        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);        System.out.print(year + "年" + month + "月" + dayOfMonth + "日");    }}
import java.util.Calendar;public class Demo07CalendarMethod {    public static void main(String[] args) {        Calendar cal = Calendar.getInstance();        cal.set(Calendar.YEAR, 2020);        System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2020年1月17日    }}

add方法

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

import java.util.Calendar;public class Demo08CalendarMethod {    public static void main(String[] args) {        Calendar cal = Calendar.getInstance();        System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2022年4月17日        // 使用add方法        cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天        cal.add(Calendar.YEAR, -3); // 减3年        System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2019年4月19日;     }}

getTime方法

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

import java.util.Calendar;import java.util.Date;public class Demo09CalendarMethod {    public static void main(String[] args) {        Calendar cal = Calendar.getInstance();        Date date = cal.getTime();        System.out.println(date); // Tue Jan 16 16:03:09 CST 2022    }}

以上就是关于“Java日期时间类Date、DateFormat、Calendar怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯