文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

从零开始学习 Java:简单易懂的入门指南之时间类(十七)

2023-08-30 19:04

关注

1.1 Date概述

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

继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,我们重点看以下两个构造函数

tips: 由于中国处于东八区(GMT+08:00)是比世界协调时间/格林尼治时间(GMT)快8小时的时区,当格林尼治标准时间为0:00时,东八区的标准时间为08:00。

简单来说:使用无参构造,可以自动设置当前系统时间的毫秒时刻;指定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 2020        // 创建日期对象,把当前的毫秒值转成日期对象        System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970    }}

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

1.2 Date常用方法

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

示例代码

public class DateDemo02 {    public static void main(String[] args) {        //创建日期对象        Date d = new Date();                //public long getTime():获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值        //System.out.println(d.getTime());        //System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年");        //public void setTime(long time):设置时间,给的是毫秒值        //long time = 1000*60*60;        long time = System.currentTimeMillis();        d.setTime(time);        System.out.println(d);    }}

小结:Date表示特定的时间瞬间,我们可以使用Date对象对时间进行操作。

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

2.1 构造方法

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

2.2 格式规则

常用的格式规则为:

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

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

2.3 常用方法

DateFormat类的常用方法有:

小结:DateFormat可以将Date对象和字符串相互转换。

2.4 练习1(初恋女友的出生日期)

//1.可以通过2000-11-11进行解析,解析成一个Date对象String str = "2000-11-11";//2.解析SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf1.parse(str);//3.格式化SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");String result = sdf2.format(date);System.out.println(result);

2.5 练习2(秒杀活动)

//1.定义字符串表示三个时间String startstr = "2023年11月11日 0:0:0";String endstr = "2023年11月11日 0:10:0";String orderstr = "2023年11月11日 0:01:00";//2.解析上面的三个时间,得到Date对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");Date startDate = sdf.parse(startstr);Date endDate = sdf.parse(endstr);Date orderDate = sdf.parse(orderstr);//3.得到三个时间的毫秒值long startTime = startDate.getTime();long endTime = endDate.getTime();long orderTime = orderDate.getTime();//4.判断if (orderTime >= startTime && orderTime <= endTime) {    System.out.println("参加秒杀活动成功");} else {    System.out.println("参加秒杀活动失败");}

3.1 概述

3.2 常用方法

方法名说明
public static Calendar getInstance()获取一个它的子类GregorianCalendar对象。
public int get(int field)获取某个字段的值。field参数表示获取哪个字段的值,
可以使用Calender中定义的常量来表示:
Calendar.YEAR : 年
Calendar.MONTH :月
Calendar.DAY_OF_MONTH:月中的日期
Calendar.HOUR:小时
Calendar.MINUTE:分钟
Calendar.SECOND:秒
Calendar.DAY_OF_WEEK:星期
public void set(int field,int value)设置某个字段的值
public void add(int field,int amount)为某个字段增加/减少指定的值

3.3 get方法示例

public class Demo {    public static void main(String[] args) {        //1.获取一个GregorianCalendar对象        Calendar instance = Calendar.getInstance();//获取子类对象        //2.打印子类对象        System.out.println(instance);        //3.获取属性        int year = instance.get(Calendar.YEAR);        int month = instance.get(Calendar.MONTH) + 1;//Calendar的月份值是0-11        int day = instance.get(Calendar.DAY_OF_MONTH);        int hour = instance.get(Calendar.HOUR);        int minute = instance.get(Calendar.MINUTE);        int second = instance.get(Calendar.SECOND);        int week = instance.get(Calendar.DAY_OF_WEEK);//返回值范围:1--7,分别表示:"星期日","星期一","星期二",...,"星期六"        System.out.println(year + "年" + month + "月" + day + "日" +hour + ":" + minute + ":" + second);        System.out.println(getWeek(week));    }    //查表法,查询星期几    public static String getWeek(int w) {//w = 1 --- 7        //做一个表(数组)        String[] weekArray = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};        //            索引      [0]      [1]       [2]      [3]       [4]      [5]      [6]        //查表        return weekArray[w - 1];    }}

3.4 set方法示例:

public class Demo {    public static void main(String[] args) {        //设置属性——set(int field,int value):Calendar c1 = Calendar.getInstance();//获取当前日期//计算班长出生那天是星期几(假如班长出生日期为:1998年3月18日)c1.set(Calendar.YEAR, 1998);c1.set(Calendar.MONTH, 3 - 1);//转换为Calendar内部的月份值c1.set(Calendar.DAY_OF_MONTH, 18);int w = c1.get(Calendar.DAY_OF_WEEK);System.out.println("班长出生那天是:" + getWeek(w));            }    //查表法,查询星期几    public static String getWeek(int w) {//w = 1 --- 7        //做一个表(数组)        String[] weekArray = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};        //            索引      [0]      [1]       [2]      [3]       [4]      [5]      [6]        //查表        return weekArray[w - 1];    }}

3.5 add方法示例:

public class Demo {    public static void main(String[] args) {        //计算200天以后是哪年哪月哪日,星期几?Calendar c2 = Calendar.getInstance();//获取当前日期        c2.add(Calendar.DAY_OF_MONTH, 200);//日期加200        int y = c2.get(Calendar.YEAR);        int m = c2.get(Calendar.MONTH) + 1;//转换为实际的月份        int d = c2.get(Calendar.DAY_OF_MONTH);        int wk = c2.get(Calendar.DAY_OF_WEEK);        System.out.println("200天后是:" + y + "年" + m + "月" + d + "日" + getWeek(wk));    }    //查表法,查询星期几    public static String getWeek(int w) {//w = 1 --- 7        //做一个表(数组)        String[] weekArray = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};        //            索引      [0]      [1]       [2]      [3]       [4]      [5]      [6]        //查表        return weekArray[w - 1];    }}

后记
👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹

来源地址:https://blog.csdn.net/m0_59230408/article/details/132056281

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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