Java——常用API(Date日期类)02

Date日期类

Date类概述和构造方法
Date代表了一个特点的时间,精确到毫秒

方法名 说明
public Date() 分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
public Date(long date) 分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
import java.util.Date;

//  public Date() 分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒 
//public Date(long date)分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数

public class DateDemo {
    
    
	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);
		// CST是中国时间 加了八个小时时区 所以是九点

	}
}

运行结果:
在这里插入图片描述
Date类的常用方法

方法名 说明
public long getTime() 获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
public void setTime(long time) 设置时间,给的是毫秒
import java.util.Date;

//Date类的常用方法

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

public class DateDemo2 {
    
    
	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)设置时间,给的是毫秒
		System.out.println(d);

		long time = 1000 * 60 * 60;
		d.setTime(time);
		System.out.println(d);

		long time1 = System.currentTimeMillis();// 系统获取当前时间
		d.setTime(time1);
		System.out.println(d);

	}
}

运行结果:
在这里插入图片描述
SimpleDateFormat类概述
SimpleDateFormat是一个具体的类,用于以区域设置敏感的方法格式化和解析日期

日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从‘A’到‘Z’以及从‘a’到‘z’引导的字母被解释为表示日期或者字符串的组建的模式字母

常用的模式字母及对应关系如下:

  • y——年
  • M——月
  • d——日
  • H——时
  • m——分
  • s——秒

SimpleDateFormat的构造方法

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

SimpleDateFormat格式化和解析日期

  1. 格式化(从Date到String)
    public final format(Date date):将日期格式化成日期/时间字符串
  2. 解析(从String到Date)
    public Date parse(String source):从给定字符串的开始解析文本以生成日期
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

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

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

//2. 解析(从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();
		String s = sdf.format(d);
		System.out.println(s);// 2021/7/26 下午10:43
		// 带参构造
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// 年月日时分秒
		String s2 = sdf2.format(d);
		System.out.println(s2);// 2021年07月26日 22:45:34
		System.out.println("-----------");

//		解析(从String到Date)
//		public Date parse(String source):从给定字符串的开始解析文本以生成日期
		String ss = "2021-07-26 22:47:47";
		// ParseException
		SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 此处的年月日要改成---
		Date dd = sdf3.parse(ss);
		System.out.println(dd);

	}
}

运行结果:
在这里插入图片描述

案例:日期工具类

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

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

//日期工具类
//需求:定义一个日期工具类(DateUtils),包含两个方法:
//把日期转换为指定格式的字符串;把字符串解析为指定格式的日期,
//然后定义一个测试类(DateDemo),测试日期工具类的方法
public class DateUtils {
    
    
	// 构造方法私有,成员方法静态
	private DateUtils() {
    
    
	}

//	把日期转换为指定格式的字符串
	public static String dateToString(Date date, String format) {
    
    
		SimpleDateFormat sdf = new SimpleDateFormat(format);// 按照指定格式创建sdf对象
		String s = sdf.format(date);// 调用format把日期转换为字符串
		return s;
	}

//	把字符串解析为指定格式的日期
	public static Date stringToDate(String s, String format) throws ParseException {
    
    
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		Date date = sdf.parse(s);
		return date;
	}

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

//测试类
public class DateDemo {
    
    
	public static void main(String[] args) throws ParseException {
    
    
		// 创建日期对象
		Date d = new Date();

		String s1 = DateUtils.dateToString(d, "yyyy年MM月dd日 HH:mm:ss");
		System.out.println(s1);

		Date date = DateUtils.stringToDate(s1, "yyyy年MM月dd日 HH:mm:ss");
		System.out.println(date);
	}
}

运行结果:
在这里插入图片描述
Calendar类概述
Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法

Calendar提供了一个类方法getlnstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化:
Calendar rightNow=Calendar.gerlnstance();

import java.util.Calendar;

//Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法

//Calendar提供了一个类方法getlnstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化:
//Calendar rightNow=Calendar.gerlnstance();

public class CalendatDemo {
    
    
	public static void main(String[] args) {
    
    
		// 获取对象
		Calendar c = Calendar.getInstance();// 多态的形式得到对象
//		System.out.println(c);

		// public int get(int field)
		// 通过get方法传日历字段,可以获得相应的值
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH) + 1;// 月是从0开始的,要加1
		int date = c.get(Calendar.DATE);
		System.out.println(year + "年" + month + "月" + date + "日");

	}
}

运行结果:
在这里插入图片描述
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;

//public int get(int field)  
//返回给定日历字段的值 

//public abstract void add(int field,int amount)
//根据日历的规则,将指定的时间量添加或减去给定的日历字段

//public final void set(int year,int month,int date)
//设置当前日历的年月日

public class CalendarDemo2 {
    
    
	public static void main(String[] args) {
    
    
		// 获取对象
		Calendar c = Calendar.getInstance();// 多态的形式得到对象
		// 通过get方法传日历字段,可以获得相应的值
//		int year = c.get(Calendar.YEAR);
//		int month = c.get(Calendar.MONTH) + 1;// 月是从0开始的,要加1
//		int date = c.get(Calendar.DATE);
//		System.out.println(year + "年" + month + "月" + date + "日");

		// public abstract void add(int field,int amount)
		// 根据日历的规则,将指定的时间量添加或减去给定的日历字段

		// 需求1:三年前的今天
//		c.add(Calendar.YEAR, -3);
//		int year = c.get(Calendar.YEAR);
//		int month = c.get(Calendar.MONTH) + 1;// 月是从0开始的,要加1
//		int date = c.get(Calendar.DATE);
//		System.out.println(year + "年" + month + "月" + date + "日");
		// 需求2:十年后的5天前
//		c.add(Calendar.YEAR, 10);
//		c.add(Calendar.DATE, -5);
//		int year = c.get(Calendar.YEAR);
//		int month = c.get(Calendar.MONTH) + 1;// 月是从0开始的,要加1
//		int date = c.get(Calendar.DATE);
//		System.out.println(year + "年" + month + "月" + date + "日");

		// public final void set(int year,int month,int date)
		// 设置当前日历的年月日
		c.set(2048, 11, 11);
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH) + 1;// 月是从0开始的,要加1
		int date = c.get(Calendar.DATE);
		System.out.println(year + "年" + month + "月" + date + "日");

	}
}

运行结果:
在这里插入图片描述

案例:二月天

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

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

//案例:二月天
//需求:获取任意一年的二月有多少天
public class CalendarTest {
    
    
	public static void main(String[] args) {
    
    
		// 键盘输入年份
		System.out.println("请输入年份:");
		Scanner sc = new Scanner(System.in);
		int year = sc.nextInt();

		// 创建日历对象,通过多态形式获得
		Calendar c = Calendar.getInstance();
		c.set(year, 2, 1);// 设置时间为当年的3月1日
		c.add(Calendar.DATE, -1);// 前一天就是二月的最后一天
		int date = c.get(Calendar.DATE);
		System.out.println("二月份有" + date + "天");

	}
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47678894/article/details/119121167