Study Better AND Day Day UP——时间处理相关类——备忘录

时间处理相关类主要包括Date类,DateFormat类,Calendar类以及其下属子类,类与类间关系如图1:

图1 时间处理相关类

其中,Date类是核心类,DateFormat类主要用于将时间格式化(时间与指定格式字符串的相互转化),Calendar类主要针对于日期。GergorianCalendar类和SimpleDateFormat类分别是其父抽象类的实现类。

Dat类是进行时间处理的基础类,但其中大部分方法现在已经被Calendar类和DateFormate类中的方法取代,程序中使用long类型的数据来表示时间,规定1970年1月1日00:00:00为基准时间,获取系统当前时间的“时刻度值”可以使用:

long now = System.currentTimeMillis();

 获取某时间刻度的毫秒数可以使用:

Date d = new Date();//无参数时返回当前时间,括号中有参数时参数表示从基准时间开始增加的毫秒数。
System.out.println(d.getTime()); //获取时间对象d的毫秒数

DateFormat是抽象类,位于java.text包中,主要用于时间和字符串的相互转化,DateFormat中规定的众多方法中,我们常用的只有两种:format()【格式化:时间—>字符串】和parse()【解析:字符串—>时间】。

在将时间转化为字符串时,对时间的指定格式化字符有规定,如图2:

图2 格式化字符

 DateFormat的基本用法如下(主要针对于格式化字符):

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

/**
 * 测试DateFormat类
 * */
public class TestDateFormat {

	public static void main(String[] args) throws ParseException {
		/**将时间对象按照“格式字符串指定的格式”转成相应的字符串*/
		//抽象类不能被new,故需要使用其实现类SimpleDateFormat()。
		//SimpleDateFormat()括号中可定义格式化的日期字符串;后续可将时间转化为指定格式
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		
		String string = df.format(new Date(1531515641)); //将毫秒数转化为指定格式的字符串
		System.out.println(string);
		
		/**将相应的字符串按照“格式字符串指定的格式”转成时间对象*/
		DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
		Date date = df2.parse("2018年8月8日 12时30分56秒");
		System.out.println(date);
		
		/**测试其他的格式字符*/
		//利用D获取本事件对象时所处年份的第几天
		DateFormat d3 = new SimpleDateFormat("D");
		String s3 = d3.format(new Date()); //当前日期2020-2-8
		System.out.println(s3);
	}
}

Calendar类是一个抽象类,提供了日期计算的相关功能,包括年、月、日、时、分、秒的展示和计算。GergorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家和地区使用的标准日历系统。

Calendar的基本用法如下:

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

/**
 * 测试Calendar类及其用法
 * */
public class TestCalendar {
	public static void main(String[] args) {
		Calendar calendar = new GregorianCalendar(2999,10,2,12,1,50);
		//可以通过get方法获取日期对象的某些属性
		int year = calendar.get(Calendar.YEAR); //获取日期对象的年份
		int month = calendar.get(Calendar.MONTH); //获取日期对象的月份
		int weekday = calendar.get(Calendar.DAY_OF_WEEK); //星期几
		int day = calendar.get(Calendar.DATE); //几号,也可以使用DAY_OF_MONTH
		System.out.println(year);
		System.out.println(month); //0-11,0表示1月,11表示12月
		System.out.println(weekday); //1-7,1表示星期日,2表示星期一,7表示星期六
		System.out.println(day);
		
		//可以通过set方法设置日期的相关属性
		Calendar c2 = new GregorianCalendar();
		c2.set(Calendar.YEAR, 3000); //设置日期对象年份为3000
		System.out.println(c2);
		
		//日期的计算
		Calendar c3 = new GregorianCalendar();
		c3.add(Calendar.DATE, 100);
		System.out.println(c3);
		
		//日期对象和时间对象的转化
		Date d4 = c3.getTime();
		Calendar c4 = new GregorianCalendar();
		c4.setTime(new Date());
		
		printCal(c4);
	}
	
	public static void printCal(Calendar c){  //将日期对象按照我们想要的格式输出
		//格式:例如 2020年2月8日 15:50:50  周六
		int year = c.get(Calendar.YEAR);
		int mon = c.get(Calendar.MONTH)+1;
		int day = c.get(Calendar.DATE);
		int weekday = c.get(Calendar.DAY_OF_WEEK)-1;
		String d1 = weekday == 0?"日":weekday+"";
		
		int hour = c.get(Calendar.HOUR);
		int min = c.get(Calendar.MINUTE);
		int sec = c.get(Calendar.SECOND);
		
		System.out.println(year+"年"+mon+"月"+day+"日 "+hour+":"+min+":"+sec+" 周"+d1);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值