29时间日期类-cnblog

1. 时间日期类

1.1 Date类(应用)

  • Date类概述

    Date 代表了一个特定的时间,精确到毫秒

  • Date类构造方法

方法名 说明
public Date() 分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
public Date(long date) 分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
public class DateDemo01 {
    
    
    public static void main(String[] args) {
    
    
        //public Date():分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
        Date d1 = new Date();
        System.out.println(d1);
        //public Date(long date):分配一个 Date对象,并将其初始化为表示从标准基准时间起
        指定的毫秒数
            long date = 1000*60*60;
        Date d2 = new Date(date);
        System.out.println(d2);
    }
}

1.2 Date类常用方法(应用)

  • 常用方法
方法名 说明
public long getTime() 获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
public void setTime(long time) 设置时间,给的是毫秒值
import java.util.Date;
/*
    public Date():分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
    public Date(long date):分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
 */

/*
    public long getTime():获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
    public void setTime(long time):设置时间,给的是毫秒值
 */

public class test {
    
    
    public static void main(String[] args) {
    
    
        //创建日期对象
        Date d = new Date();

        //public long getTime():获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
        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);
    }
}

1.3 SimpleDateFormat类(应用)

  • SimpleDateFormat类概述

    SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。
    我们重点学习日期格式化和解析

  • SimpleDateFormat类构造方法

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

    • 格式化(从Date到String)

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

      • public Date parse(String source):从给定字符串的开始解析文本以生成日期
        示例代码
package Heima.SimpleDateFormat.test1;

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

/*
    构造方法:
        public SimpleDateFormat​():构造一个SimpleDateFormat,使用默认模式和日期格式
        public SimpleDateFormat​(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式

    格式化:从 Date 到 String
        public final String format(Date date):将日期格式化成日期/时间字符串

    解析:从 String 到 Date
        public Date parse​(String source):从给定字符串的开始解析文本以生成日期
 */
public class SimpleDateFormatDemo {
    
    
    public static void main(String[] args) throws ParseException {
    
    
        //格式化:从Date到String
        Date d = new Date();
//        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 = "2029-08-22 11:11:11";//ParseException
        SimpleDateFormat sdf2 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        final Date dd = sdf2.parse(ss);
        System.out.println(dd);
    }
}

案例:日期工具类

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

Snipaste_2021-09-18_15-04-13

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 d, String format){
    
    
        SimpleDateFormat sdf =new SimpleDateFormat(format);
        String d1 = sdf.format(d);
        return d1;
    }
    /*
    把字符串解析为指定格式的日期
    返回值类型:Date
    参数:String s, String format
    */
    public static Date stringtodate(String s,String format) throws ParseException {
    
    
        SimpleDateFormat dd = new SimpleDateFormat(format);
        Date p = dd.parse(s);
        return p;
    }
}

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

public class DateUtilsTest {
    
    
    public static void main(String[] args) throws ParseException {
    
    
        Date d = new Date();
        String format = "yyyy年MM月dd日 HH时mm分ss秒";

        //Date--String
        String datetostring = DateUtils.datetostring(d, format);
        System.out.println(datetostring);

        //String--Date
        String ss = "2029-08-22 11:11:11";
        String format2 = "yyyy-MM-dd HH:mm:ss";
        Date stringtodate = DateUtils.stringtodate(ss, format2);
        System.out.println(stringtodate);


    }
}

1.4Clalendar类(日历类)

  • Calendar类概述
    Calendar 为特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
    Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象。
    该方法返回一个Calendar 对象。
    其日历字段已使用当前日期和时间初始化:Calendar rightNow = 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) 设置当前日历的年月日
import java.util.Calendar;

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

    Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象,该方法返回一个 Calendar 对象,
    其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();
 */
public class CalendarDemo {
    
    
    public static void main(String[] args) {
    
    
        //获取对象
        Calendar c = Calendar.getInstance();//多态形式常见对象
        System.out.println(c);

        //public int get(int filed)
        int year = c.get(Calendar.YEAR);
        int mouths = c.get(Calendar.MONTH)+1;
        int days = c.get(Calendar.DATE);
        System.out.println(year+"Year"+mouths+days);

    }
}

        //需求1:3年前的今天
//        c.add(Calendar.YEAR,-3);
//        year = c.get(Calendar.YEAR);
//        month = c.get(Calendar.MONTH) + 1;
//        date = c.get(Calendar.DATE);
//        System.out.println(year + "年" + month + "月" + date + "日");

        //需求2:10年后的10天前
//        c.add(Calendar.YEAR,10);
//        c.add(Calendar.DATE,-10);
//        year = c.get(Calendar.YEAR);
//        month = c.get(Calendar.MONTH) + 1;
//        date = c.get(Calendar.DATE);
//        System.out.println(year + "年" + month + "月" + date + "日");

        //public final void set​(int year,int month,int date):设置当前日历的年月日
        c.set(2050,10,10);
        year = c.get(Calendar.YEAR);
        month = c.get(Calendar.MONTH) + 1;
        date = c.get(Calendar.DATE);
        System.out.println(year + "年" + month + "月" + date + "日");

案例:二月天

  • 获取任意一年的二月有多少天

Snipaste_2021-09-18_15-54-03

/*
    需求:
        获取任意一年的二月有多少天

    思路:
        1:键盘录入任意的年份
        2:设置日历对象的年、月、日
            年:来自于键盘录入
            月:设置为3月,月份是从0开始的,所以设置的值是2
            日:设置为1日
        3:3月1日往前推一天,就是2月的最后一天
        4:获取这一天输出即可
 */

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

public class ErYueTian {
    
    
    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 i = c.get(Calendar.DATE);
        System.out.println(year+"年的二月份有"+i+"天");

    }
}

猜你喜欢

转载自blog.csdn.net/honglaoliu/article/details/120389940
今日推荐