日期相关(类与方法)

Date类


    目标:掌握Date类的基本使用

    1.Date类的作用:
        java.util.Date 代表一个精确的时间,精确到毫秒。

    2.构造方法
        Date()
        Date(long date) : 使用毫秒数创建Date对象(在19701100:00:00 基础上加上指定毫秒数)

    3.常用方法
        long getTime() :获取当前时间的毫秒值
        void setTime(long  time) :设置时间(在19701100:00:00基础上增加设置的毫秒值)
 

代码

package _06Date类;


import java.util.Date;


public class Demo1 {
    public static void main(String[] args) {

        //当前的系统时间
        Date d = new Date();
        System.out.println(d); //Tue May 03 11:24:09 CST 2022  CST China Standard Time

        //将时间转为毫秒
        long time = d.getTime();
        System.out.println(time); //1651548373537  从1970年1月1日 0:0:0 开始计算,到当前时间所经过的毫秒值

        //使用带参构造方法创建时间对象(了解)
        Date d2 = new Date(1000); //从1970年1月1日 0:0:0 开始计算,往后加1秒
        System.out.println(d2); //Thu Jan 01 08:00:01 CST 1970

        Date d3 = new Date();
        d3.setTime(1000*60); //1分钟  从1970年1月1日 0:0:0 开始计算,往后加1分钟
        System.out.println(d3);
    }
}

日期转换格式化处理

目标:能够使用SimpleDateFormat类处理日期格式。

    1.构造方法
        SimpleDateFormat()   使用默认日期模板创建对象。
        SimpleDateFormat(String pattern)  使用指定日期模板创建对象。

    2.日期格式化
        public final String format(Date date)

    3.文本解析
        public Date parse(String source)

代码

public class Demo1 {
    public static void main(String[] args) throws ParseException {

        //使用默认模板创建日期格式化对象
       /* SimpleDateFormat sf = new SimpleDateFormat();

        Date d = new Date();
        System.out.println(d);

        //格式化时间为字符串
        String s = sf.format(d);
        System.out.println(s); //2022/5/3 上午11:51*/


        //使用指定时间模板,创建创建日期格式化对象
       // SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
        /*
            yyyy 年
            MM 月
            dd 日
            HH 小时(24小时制) hh(12小时制)
            mm 分
            ss 秒
            a  上下午
            SSS 毫秒
            E 星期
         */
        SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日 a HH时mm分ss秒SSS毫秒 E");
        Date d = new Date();
        String s = sf.format(d); //格式化时间
        System.out.println(s);

        SimpleDateFormat sf2 = new SimpleDateFormat("HH:mm E\nyyyy/MM/dd");
        String ss = sf2.format(new Date());
        System.out.println(ss);


    }
}

public class Demo2 {
    public static void main(String[] args) throws ParseException {

        //模板格式要和 准备解析的字符串的时间格式一样
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");

        String date = "2021-10-10";
        Date d = sf.parse(date);
        System.out.println(d); //Sun Oct 10 00:00:00 CST 2021
    }
}


秒杀小案例

package _08日期转换练习_秒杀活动;

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

/*
    目标:使用日期转换完成需求。

需求:
    秒杀开始时间: 2020年11月11日 00:00:00
    秒杀结束时间: 2020年11月11日 00:10:00

    小贾下单并付款的时间为:
        2020年11月11日 0:03:47
    小皮单并付款的时间为:
        2020年11月11日 0:10:11
    用代码说明这两位同学有没有参加上秒杀活动?

        把时间转为毫秒值,进行比较,看支付时间是否在秒杀范围内
        "2020年11月11日 00:00:00" -->  Date对象 -->  getTime -->毫秒
 */
public class Demo1 {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

        //开始时间
        String s1 = "2020年11月11日 00:00:00";
        Date d1 = sf.parse(s1);
        long start = d1.getTime();

        //结束时间
        long end = sf.parse("2020年11月11日 00:10:00").getTime();

        //小贾下单并付款的时间
        long xiaoJia = sf.parse("2020年11月11日 0:03:47").getTime();

        //小皮下单并付款的时间
        long xiaoPi = sf.parse("2020年11月11日 0:10:11").getTime();

        if(xiaoJia>=start && xiaoJia<=end){
            System.out.println("小贾秒杀成功");
        }else {
            System.out.println("小贾秒杀失败");
        }

        if(xiaoPi>=start && xiaoPi<=end){
            System.out.println("小皮秒杀成功");
        }else {
            System.out.println("小皮秒杀失败");
        }

    }
}

Calendar日历类

目标:学习Calendar类的常用功能

    1.创建对象:
        Calendar.getInstance();

    2.常用方法:
        get(int field) 获取指定日历字段的值

        set(int field,  int value) 设置某个日历字段的值
        set​(int year, int month, int date) 设置年,,add(int field,  int amount) 添加或减去某个日历字段的值。

        getTimeInMillies() 返回该日历时间的毫秒值。

    3.常用日历字段含义
        年:YEAR
        月:MONTH (0~11表示1~12月)
        日:DATE 或者 DAY_OF_MONTH
        时:HOUR_OF_DAY(24小时)
        分:MINUTE
        秒:SECOND
        周几:DAY_OF_WEEK(1~7表示周日~周六)

代码

package _09Calendar日历类;


import java.util.Calendar;
import java.util.Date;

/*
    
 */
public class Demo1 {
    public static void main(String[] args) {
        //获取日历对象
        Calendar c = Calendar.getInstance();

        //getTimeInMillies() 返回该日历时间的毫秒值。

        long time = c.getTimeInMillis();
        System.out.println(time);

        //set(int field,  int value) 设置某个日历字段的值
        //把时间改为2009年9月9日
        //c.set(Calendar.YEAR,2009);
        //c.set(Calendar.MONTH,8); //0-11表示1-12月
        //c.set(Calendar.DATE,9);
        //c.set(2009, 8,9);


        //把时间设置为5天之前
        //c.add(Calendar.DATE,-5);

        //100天之后是星期几?
        c.add(Calendar.DATE,100);

        //获取年月日时分秒
        System.out.println("年:" + c.get(Calendar.YEAR));
        System.out.println("月:" + (c.get(Calendar.MONTH)+1) ); //0-11表示1-12月份 , 月份要加1
        System.out.println("日:" + c.get(Calendar.DATE));
        System.out.println("12小时:" + c.get(Calendar.HOUR)); //3
        System.out.println("24小时:" + c.get(Calendar.HOUR_OF_DAY));//15
        System.out.println("分:" + c.get(Calendar.MINUTE));
        System.out.println("秒:" + c.get(Calendar.SECOND));

        //星期(1-7 表示 周日~周六)
        int i = c.get(Calendar.DAY_OF_WEEK) -1; //减1,变成0-6 表示周日~周六
        String[] week = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        System.out.println(week[i]);
    }

}

案例

package _10练习_年龄天数计算;

import java.util.Calendar;

/*
    计算从出生到现在,总共过了多少天?

    计算从出生到现在,总共过了多少毫秒,把毫秒换成天
 */
public class Demo {
    public static void main(String[] args) {
        //获取今天的毫秒值
        long today = Calendar.getInstance().getTimeInMillis();

        //获取出生那天的毫秒
        Calendar c = Calendar.getInstance();
        c.set(1999,11,12); //假设是1999年12月12日出生
        long birthday = c.getTimeInMillis();

        //总共过了多少毫秒,转为天数
        long days = (today - birthday) / 1000 / 60 / 60 / 24;
        System.out.println(days);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值