Java中表现时间的类

一.Date类
1.使用Date类代表当前时间
由于Date类覆盖了toString()方法,所以可以直接输出Date类型的对象

Date date = new Date();
System.out.println(date);
输出结果:Fri Oct 11 09:56:39 CST 2019

可以使用java中SimpleDateFormat类对Date的格式进行转换
SimpleDateFormat中的format()方法:将日期类型转换为字符串
SimpleDateFormat中的parse()方法:将字符串类型转换为日期类型

SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String SDFtime = dd.format(date);
System.out.println(SDFtime);
输出结果:2019-10-11 09:56:39
Date SDFdate = dd.parse(SDFtime);
System.out.println(SDFdate);
输出结果:Fri Oct 11 09:56:39 CST 2019

2.Date类还可以通过getTime()计算两个时间的差距

public static void a(){
  long starTime = new Date().getTime();
  String string = new String();
  for(int i=0;i<50000;i++){
  string = string + i;
  }
  long endTime = new Date().getTime();
  System.out.println("这段程序运行需花费时间:"+(endTime - starTime));
  }

二.Calendar类
1.使用Calendar类代表当前的时间:
由于Calendar类toString实现的没有Date类那么直观,所以直接输出Calendar类的对象意义不大。

Calendar c = Calendar.getInstance();
System.out.println(c);
直接输出c为:java.util.GregorianCalendar[time=1570783028180,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=9,WEEK_OF_YEAR=41,WEEK_OF_MONTH=2,DAY_OF_MONTH=11,DAY_OF_YEAR=284,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=37,SECOND=8,MILLISECOND=180,ZONE_OFFSET=28800000,DST_OFFSET=0]
SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(dd.format(c.getTime()));
使用SimpleDateFormat转换一下结果为:2019-10-11 17:14:45

2.使用Calendar代表指定的时间:
set方法的声明为:set(int year,int month,int date)
Calendar类中:year值就是年份实际值,month值是实际月份值减1,date值为实际日期值

Calendar c = Calendar.getInstance();
c.set(2019,10-1,11);
SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(dd.format(c.getTime()));
输出结果:2019-10-11 17:10:48

如果值需设置某个字段:

Calendar c = Calendar.getInstance();
例如日期值:c.set(Calendar.Date,10),代表日期为10-------------------------------------------------------------------
Calendar.YEAR---年份;
Calendar.MONTH---月份;
Calendar.DATE---日期;
Calendar.DAY_OF_MONTH---日期,和Calendar.DATE字段完全相同;
Calendar.HOUR---12小时制的小时数;
Calendar.HOUR_OF_DAY---24小时制的小时数;
Calendar.MINUTE---分钟;
Calendar.SECOND---秒;
Calendar.DAY_OF_WEEK---星期几。

3.获取Calendar类中的信息

Calendar c = Calendar.getInstance();
年份---c.get(c.YEAR);
月份---c.get(c.MONTH)+1;
日期---c.get(c.DAY_OF_MONTH);
小时---c.get(c.HOUR_OF_DAY);
分钟---c.get(c.MINUTE);-----c.get(c.SECOND);
星期---c.get(Calendar.DAY_OF_WEEK);
在Calendar类中,周日是1,周一是2,周二是3,依次类推。

4.Calendar类的add方法:(add(int field,int amount))
该方法的作用是在Calendar对象中的某个字段上增加或减少一定的数值,增加是amount的值为正,减少是amount的值为负

例如计算当前时间100天以后的日期:
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE,100);

5.计算两个日期之间相差的天数

Calendar c1 = Calendar.getInstance();
c1.set(2019,10-1,14);
Calendar c2 = Calendar.getInstance();
c2.set(2020,1-1,24);
//转换为相对时间
long t1 = c1.getTimeInMillis();
long t2 = c2.getTimeInMillis();
//计算天数
long days = (t2 - t1 )/(24*60*60*1000);
System.out.println("相距=="+days);
输出结果为:相距==102

6.输出当月的日历

	//获得当前时间
	Calendar c = Calendar.getInstance();
	//设置代表日期为1号
	c.set(Calendar.DATE,1);
	//获得1号是星期几
	int start = c.get(Calendar.DAY_OF_WEEK);
	System.out.println("1号是星期几=="+start);
	//获得当月的最大日期数
	int maxday = c.getActualMaximum(Calendar.DATE);
	System.out.println("当月的最大日期数=="+maxday);
	//输出标题
	System.out.println("日 一 二 三 四 五 六");
	//输出开始的空格
	for(int i = 1 ; i<start ; i++){
		System.out.print(" ");
	}
	//输出该月的所有日期
	for(int i = 1 ; i<=maxday; i++){
		//输出日期数字
		System.out.print(" "+i);
		//输出分隔空格
		System.out.print(" ");
		if(i<10){
			System.out.print(" ");
		}
		//判断是否换行
		if((start + i -1) % 7 == 0 ){
			System.out.println();
		}
	}
	//换行
	System.out.println();

7.获取某个时间段 前一天/后一天

	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	Date now = null;
	try {
		now = sdf.parse(selectTime);
	} catch (ParseException e) {
		e.printStackTrace();
	}
	Calendar calendar = new GregorianCalendar();
	calendar.setTime(now);
	calendar.add(calendar.DATE, -1); //获取前一天
	//calendar.add(calendar.DATE, +1);  获取后一天
	now = calendar.getTime();
	String yesterdayDate = sdf.format(now);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值