20.时间日期的操作类

1.Calendar类---日历

public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable<Calendar>

Calendar类是一个抽象类,不能通过new+构造方法的方式创建对象

构造方法
protected  Calendar()  
protected  Calendar(TimeZone zone, Locale aLocale) 

构造方法是protected修饰的,其他的非子类中不能通过new+构造方法的方式创建对象

静态方法【类名】,返回值是Calendar类对象
static Calendar getInstance()  
得到对象的方式
Calendar  calendar=Calendar.getInstance();

Calendar的常用操作
1.查看日期
    常用字段
    static int YEAR  表示年份。
    static int MONTH  表示月份。
    static int DAY_OF_MONTH  表示本月的日期
    static int DAY_OF_YEAR  本年度的日数
    static int DAY_OF_WEEK  表示一周中的日期
    static int WEEK_OF_YEAR  本年度的周数
    int get(int field)查询指定的日期时间

2.选定日期,未来的日期
    void set(int year, int month, int date, int hourOfDay, int minute, int second)  
    void set(int year, int month, int date) 
     注意:set完成日期以后再一次使用日历对象得到的是设置后的相关日期信息。

//1.查看日期
		//常用字段
		/*
		static int YEAR  表示年份。
		static int MONTH  表示月份。
		static int DAY_OF_MONTH  表示本月的日期
		static int DAY_OF_YEAR  本年度的日数
		static int DAY_OF_WEEK  表示一周中的日期
		static int WEEK_OF_YEAR  本年度的周数
		*/
		Calendar calendar=Calendar.getInstance();
		//int get(int field)查询指定的日期时间
		int year=calendar.get(Calendar.YEAR);
		System.out.println("year=="+year);
		//月份不是从1开始数,是从0开始数,往往需要加1
		int month=calendar.get(Calendar.MONTH);
		System.out.println("month=="+(month+1));
		int dayofmonth=calendar.get(Calendar.DAY_OF_MONTH);
		System.out.println("dayofmonth=="+dayofmonth);
		//星期是从星期日开始数,往往需要减1
		int dayofweek=calendar.get(Calendar.DAY_OF_WEEK);
		System.out.println("dayofweek=="+(dayofweek-1));
		int yearofweek=calendar.get(Calendar.WEEK_OF_YEAR);
		System.out.println("yearofweek=="+yearofweek);
		int dayofyear=calendar.get(Calendar.DAY_OF_YEAR);
		System.out.println("dayofyear=="+dayofyear);
		

		//选定日期,未来的日期
		//void set(int year, int month, int date) 
		calendar.set(2028, 7, 1);
		int year1=calendar.get(Calendar.YEAR);
		System.out.println("year1=="+year1);
		//月份不是从1开始数,是从0开始数,往往需要加1
		int month1=calendar.get(Calendar.MONTH);
		System.out.println("month1=="+month1);
		int dayofmonth1=calendar.get(Calendar.DAY_OF_MONTH);
		System.out.println("dayofmonth1=="+dayofmonth1);
		int dayofweek1=calendar.get(Calendar.DAY_OF_WEEK);
		System.out.println("dayofweek1=="+(dayofweek1-1));
		int yearofweek1=calendar.get(Calendar.WEEK_OF_YEAR);
		System.out.println("yearofweek1=="+yearofweek1);
		int dayofyear1=calendar.get(Calendar.DAY_OF_YEAR);
		System.out.println("dayofyear1=="+dayofyear1);

2.java.util.Date类

public class Date
extends Object
implements Serializable, Cloneable, Comparable<Date>

Date类表示特定的时间【日期和时间】

Date类的构造方法
Date() 
Date(long date) 

Date类的实例方法    
boolean after(Date when) 测试此日期是否在指定日期之后。  
boolean before(Date when) 测试此日期是否在指定日期之前。  
boolean equals(Object obj) 比较两个日期来平等。【被重写过】
long getTime() 返回自1970年1月1日以来,到当前时间的毫秒数。
void setTime(long time)设置此 Date对象以表示1970年1月1日00:00:00 GMT后设置的毫秒数的时间点String toString() 将此 Date对象转换为 String

import java.util.Date;
public class TestMain {

	public static void main(String[] args) {
		//Date类的构造方法
		//Date()得到当前系统时间
		//Date  date1=new Date();
		//Fri Jul 01 15:55:24 GMT+08:00 2022
		//System.out.println(date1);
		//Date(long date)得到从“时代”的标准基准时间向未来推算指定的毫秒数所得的时间日期
		//1970年1月1日00:00:00 GMT【“时代”的标准基准时间】 
		//Date  date2=new Date(3000);
		//1000---Thu Jan 01 08:00:01 GMT+08:00 1970
		//2000---Thu Jan 01 08:00:02 GMT+08:00 1970
		//3000---Thu Jan 01 08:00:03 GMT+08:00 1970
		//System.out.println(date2);
		
		/*
		Date类的实例方法	
		boolean after(Date when) 测试此日期是否在指定日期之后。  
		boolean before(Date when) 测试此日期是否在指定日期之前。  
		boolean equals(Object obj) 比较两个日期来平等。【被重写过】
		long getTime() 返回自1970年1月1日以来,到当前时间的毫秒数。
		void setTime(long time)设置此 Date对象以表示1970年1月1日00:00:00 GMT后设置的毫秒数的时间点
		String toString() 将此 Date对象转换为 String
		*/
		
		//boolean after(Date when) 测试此日期是否在指定日期之后。  
		Date  date1=new Date(); //Fri Jul 01 15:55:24 GMT+08:00 2022
		System.out.println(date1);
		Date  date2=new Date(3000); //Thu Jan 01 08:00:03 GMT+08:00 1970
		System.out.println(date2);
		if(date1.after(date2)){
			System.out.println("date1在date2之后");
		}else{
			System.out.println("date1在date2之前");
		}
		//boolean before(Date when) 测试此日期是否在指定日期之前。
		if(date1.before(date2)){
			System.out.println("date1在date2之前");
		}else{
			System.out.println("date1在date2之后");
		}
		
		//long getTime() 返回自1970年1月1日以来,到当前时间的毫秒数。
		long haomiaoshu=date1.getTime();
		System.out.println("haomiaoshu==="+haomiaoshu);
		Date  date3=new Date(haomiaoshu);
		System.out.println(date3);
		
		//void setTime(long time)设置此 Date对象以表示1970年1月1日00:00:00 GMT后设置的毫秒数的时间点
		Date  date4=new Date();
		date4.setTime(3000);
		System.out.println(date4);
		
	}
}

3.SimpleDateFormat类

public class SimpleDateFormat
extends DateFormat

SimpleDateFormat类是用来格式化和解析日期时间

SimpleDateFormat类
SimpleDateFormat(String pattern) 得到一个有格式的SimpleDateFormat类对象

设置时间日期格式的字母
yyyy----Year 
M-------Month in year 
d-------Day in month 
H-------Hour in day (0-23) 
m-------Minute in hour  
s-------Second in minute
E-------Day name in week    
设置时间日期格式
"yyyy-MM-dd"  2022-07-01
"yyyy/MM/dd HH:mm:ss"  2022-07-01 16:27:30
"yyyy年MM月dd日 HH:mm" 2022年07月01日 16:27

String format(Date date)将日期格式化成日期/时间字符串。 
Date parse(String source)从给定字符串的开始解析文本以生成日期Date对象 

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

public class TestMain {

	public static void main(String[] args)throws Exception {
		/*
		String pattern="yyyy-MM-dd HH:mm:ss E";
		SimpleDateFormat sdf=new SimpleDateFormat(pattern);
		Date  date1=new Date();
		//Fri Jul 01 15:55:24 GMT+08:00 2022
		String newdate=sdf.format(date1);
		System.out.println(newdate);
		//2022-07-01 16:39:49 星期五
		*/
		
		String pattern="yyyy-MM-dd HH时mm分ss秒";
		String strdate="2028-07-02 13时12分14秒";
		SimpleDateFormat sdf=new SimpleDateFormat(pattern);
		Date date=sdf.parse(strdate);
		System.out.println(date);
		//Sun Jul 02 13:12:14 GMT+08:00 2028
	}
}

Calendar类中的getTime()方法可以将Calendar类设置的日期转换成Date类对象

Calendar calendar=Calendar.getInstance();
calendar.set(2022, 8-1, 2, 12, 13, 14);
Date  date=calendar.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH时mm分ss秒");
String strtime=sdf.format(date);
System.out.println(strtime); 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值