5.Java常用API——Date类

本文介绍了Java中的Date、SimpleDateFormat和Calendar类的用法,包括时间获取、设置、格式化和解析,以及Calendar的常见操作。通过实例演示了如何处理日期和时间的计算,以及日期工具类的创建。
摘要由CSDN通过智能技术生成

1.时间日期类

1.Date

  • 常用方法
方法名说明
public long getTime()获取的是日期对象从1970年1月1日00:00:00到现在的毫秒值
public void setTime(long time)设置时间,给的是毫秒值
  • 示例代码
package study02;

import java.util.Date;

public class DateDemo {
    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+"年");//计算距离1970年1月1日多少年


//| `public void setTime(long time)` | 设置时间,给的是毫秒值 |
//        long time = 1000*60*100;

        //currentTimeMillis();返回当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数
        long time = System.currentTimeMillis();
        
        d.setTime(time);
        System.out.println(d);

    }
}

2.SimpleDateFormat

  • SimpleDateFormat类概述

    • SimpleDateFormat是一个具体的类,用于以区间设置敏感的方式格式化和解析日期。(重点学习日期格式化和解析)
    • 日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从’A‘到’Z‘ 以及从’a‘到’z‘引号的字母被解释为表示日期或时间字符串的组件的模式字母。
    • 常用的模式字母及对应关系如下
      • y 年
      • M 月
      • d 日
      • H 时
      • m 分
      • s 秒
  • SimpleDateFormat类构造方法

    方法名说明
    public SimpleDateFormat()构造一个SimpleDateFormat, 使用默认模式和日期格式
    public SimpleDateFormat(String pattern)构造一个SimpleDateFormat使用给定的模式和默认的日期格式
  • SimpleDateFormat类的常用方法

    • 格式化(从DateString)

      • public final String format(Date date):将日期格式化成日期/时间字符串
    • 解析(StringDate)

      • public Date paese(String source):从给定字符串的开始解析文本以生成日期
  • 示例代码

package study02;

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

public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {
        Date d = new Date();
//        Date到String
//        SimpleDateFormat sdf = new SimpleDateFormat();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
        String s = sdf.format(d);
        System.out.println(s);

//        String到Date
        String ss = "2048-08-09 11:11:11";
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date dd = sdf2.parse(ss);
        System.out.println(dd);
//      字符串ss的格式必须与SimpleDateFormat()的括号中的格式一致
    }
}

3. 日期工具类案例

  • 案例需求

    定义一个日期工具类(DateUtils),包含两个方法:把日期转换为指定格式的字符串;把字符串转换为指定格式的日期,然后定义一个测试类(DateDemo),测试日期工具类方法

  • 代码实现

    • 工具类
    package study03;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateUtils {
        private DateUtils(){}
            /*
            把日期转为指定格式的字符串
            返回值类型:String
            参数:Date date, String format
         */
            public static String dateToString(Date date, String format){
                SimpleDateFormat sdf = new SimpleDateFormat(format);
                String s = sdf.format(date);
                return s;
            }
    
            /*
            把字符串解析为指定格式的日期
            返回值类型:Date
            参数:String s, String format
         */
            public static Date stringToDate(String s,String format) throws ParseException {
                SimpleDateFormat sdf = new SimpleDateFormat(format);
                Date d = sdf.parse(s);
                return d;
            }
    }
    
    • 测试类
    package study03;
    
    import java.text.ParseException;
    import java.util.Date;
    
    public class DateDemo {
        public static void main(String[] args) throws ParseException {
            //DateToString
            Date d = new Date();
            String s1 = DateUtils.dateToString(d,"yyyy年MM月dd日 HH:mm:ss");
            System.out.println(s1);
    
            String s2 = DateUtils.dateToString(d,"yyyy年MM月dd日");
            System.out.println(s2);
            System.out.println("=================");
    
            //StringToDate
            String s3 = "2021年08月28日 12:12:12";
            Date d1 = DateUtils.stringToDate(s3,"yyyy年MM月dd日 HH:mm:ss");
            System.out.println(d1);
        }
    }
    

4.Calendar

  • Calendar类概述

    Calendar为了特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法

    Calendar提供了一个类方法getInstance用于获取这种类型的一般有用的对象。

    该方法返回一个Calendar对象。

    其日历字段已使用当前日期和时间初始化:Calendar rigtNow = Calendar.getInstance();

  • Calendar类常用方法

方法名说明
public int get(int field)返回给定日历字段的值
public abstract void add (int field,int amount)根据日历的规则,将指定的时间量添加或减去给定的日历字段
public final void set(int year,int month,int date)设置当前日历的年月日
package study05;

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

public class calendarDemo {
    public static void main(String[] args) {
        Calendar s = Calendar.getInstance();//多态的形式
//        public int get(int field)
//        int year = s.get(Calendar.YEAR);
//        int month = s.get(Calendar.MONTH) + 1;//月份是从0开始的
//        int day = s.get(Calendar.DATE);
//        System.out.println(year + "年" + month + "月" + day + "日");

//        public abstract void add (int field,int amount)
        //需求:三年前的今天
       /* s.add(Calendar.YEAR,-3);
        int year = s.get(Calendar.YEAR);
        int month = s.get(Calendar.MONTH) + 1;//月份是从0开始的
        int day = s.get(Calendar.DATE);
        System.out.println(year + "年" + month + "月" + day + "日");*/

       /* //需求:十年后的五天前
        s.add(Calendar.YEAR,10);
        s.add(Calendar.DATE,-5);
        int year = s.get(Calendar.YEAR);
        int month = s.get(Calendar.MONTH) + 1;//月份是从0开始的
        int day = s.get(Calendar.DATE);
        System.out.println(year + "年" + month + "月" + day + "日");*/

//        public final void set(int year,int month,int date)
        s.set(2064,11,11);
        int year = s.get(Calendar.YEAR);
        int month = s.get(Calendar.MONTH) + 1;//月份是从0开始的
        int day = s.get(Calendar.DATE);
        System.out.println(year + "年" + month + "月" + day + "日");


    }
}

案例:二月天

需求:获取任意一年的二月有多少田

package study05;

import java.util.Calendar;
import java.util.Scanner;

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

                //键盘录入任意的年份
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入年:");
                int year = sc.nextInt();

                //设置日历对象的年、月、日
                Calendar c = Calendar.getInstance();
                c.set(year, 2, 1);

                //3月1日往前推一天,就是2月的最后一天
                c.add(Calendar.DATE, -1);

                //获取这一天输出即可
                int date = c.get(Calendar.DATE);
                System.out.println(year + "年的2月份有" + date + "天");


    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幺洞两肆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值