2020-12-16Date类/DateFormat抽象类/SimpleDateFormat类/格式化字符标准及含义/Calendar日历类

Date类

类Date表示特定的瞬间,精确到毫秒。在java1.1版本后Date API废弃了很多的方法,官方提倡使用Calender以及使用DateFormat日期格式化类来代替Date中被废弃的诸多方法

Date对象的创建

public Date()
//构建一个jvm所在环境的系统日期时间Date对象
public Date(long date)
//以给定的date参数构建一个Date对象

Date未废弃方法及格式化
public boolean affer(Date when)
public boolean before(Date when)
public int compareTo(Date anotherDate)
public long getTime()
public void setTime(long time)
public String toString()
after方法判断时间先后

	public String eqEmpBirth(Employee e0,Employee e2) {
		return e0.getBirth().after(e2.getBirth())?"e1的生日比e2大":"e2的生日比e1大";
		Employee e0 = new Employee("令狐冲",new Date(new Date().getTime()-1000000));
		Employee e2 = new Employee("任盈盈",new Date(new Date().getTime()-100));
		System.out.println(new DateSupport().eqEmpBirth(e0, e2));

setTime方法改变Date对象

	public Date changeDateStatus(Date date,long num,int tag) {
		if(tag>0) {//对date实现增加num时间
			date.setTime(date.getTime()+num);
		}else {//对date实现减少num时间
			date.setTime(date.getTime()-num);
		}
		return date;
		Date d0 = new Date(123456789);
		int tag =2;
		long num = 100000;
		
		Date d2 = new DateSupport().changeDateStatus(d0, num, tag);
		System.out.println(d0.getTime());
		System.out.println(d2.getTime());
		System.out.println(d0 == d2);

DateFormat抽象类

使用DateFormat抽象类对Date对象进行格式化

DateFormat.getDatelnstance()
//获取DateFormat实例对象

**format(Date)方法实现对给定日期对象的格式化并返回字符串表现形式

		Date d0 = new Date(123456789156L);
		DateFormat df = DateFormat.getDateInstance();//默认形式实现对给定的date对象格式化
		System.out.println(df.format(d0));

使用给定的格式化创建DateFormat

		//使用给定的格式化创建DateFormat
		DateFormat df0 = DateFormat.getDateInstance(DateFormat.MEDIUM);
		System.out.println("以MEDIUM样式格式化日期对象"+df0.format(d0));

SimpleDateFormat类

SimpleDateFormat继承自DateFormat类,可提供自定义格式的转换规则

public SimpleDateFormat()
//以默认(yy-M-dd ah:m)的模式和语言环境的日期格式构造对象
public SimpleDateFormat(String pattern)
//以给定的pattern模式和默认语言环境的日期格式构造对象
public SimpleDateFormat(String pattern,Locale locale)
//以给定的pattern模式和locale语言环境的日期格式构造对象

SimpleDateFormat类给定的形式及地区格式化日期对象

		Date d0 = new Date(123456789156L);
		SimpleDateFormat sdf =new SimpleDateFormat();
		System.out.println("SimpleDateFormat默认形式格式化日期对象"+ sdf.format(d0));
		
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd a",Locale.US);//给定格式化标记及地区
		System.out.println("SimpleDateFormat以给定的形式及地区格式化日期对象"+sdf2.format(d0));

format方法

public String format(Date date)
//格式化Date对象为字符串

parse方法

public Date parse(String dateStr)
//格式化字符串为Date对象方法

格式化字符标准及含义

字母日期或时间元素表示
GRra 标识符(公元)Text
y/YYear
M年中的月份Month
w年中的周数Number
W月份中的周数Number
D年中的天数Number
d月份中的天数Number
F月份中的星期Number
E星期中的天数Text
aAm/pm 标记(上午,下午)Text
H一天中的小时数(0-23)Number
k一天中的小时数(1-24)Number
Kam/pm中的小时数(0-11)Number
ham/pm中的小时数(1-12)Number
m小时中的分秒数Number
s分钟中的秒数Number
S毫秒数Number
z时区General time zone
Z时区RFC 822 time zone

思考题
1.将给定的员工生日按照给定的日期部分进行更改
可能对年份进行增减,可能对月份进行增减,可能对天进行增减
2.将给定的日期对象格式化为指定的字符串格式返回
3.将给定的2个日期进行比较,返回这两个日期的相差天数的非负值。
第2题答案

	public static final String SHORT_TIME = "h:m:s";
	public static final String LONG_TIME = "HH:mm:ss SSSS";
	public static final String SHORT_DATE = "YY-M-d";
	public static final String LONG_DATE = "yyy/MM/dd";
	public static final String FULL_DATE_TIME_CHINA = "yyyy年MM月dd日 HH时mm分ss秒 SSSS毫秒";
	/**
	 * 按照给定的样式pattern格式化给定的source Date对象
	 * @param source 欲被格式化的Date对象
	 * @param pattern 格式化标准,取自当前FormatDateManagment中的常量
	 * @return 被格式化后的Date String表示形式
	 */
	public static String formatDateByPattern(Date source,String pattern) {
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		return sdf.format(source);
	}
		Date d0 = new Date(123456789156L);
		String str = FormatDateManagment.formatDateByPattern(d0,FormatDateManagment.FULL_DATE_TIME_CHINA);
		System.out.println(str);

使用parse方法将字符串格式化为Date对象

	public static Date fromStringtoDateByPattern(String dateStr,String pattern) throws ParseException {
		Date target = null;
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		try {
			target = sdf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return target;
	}
		String dateStr = "2017-12-24";
		Date date1 = FormatDateManagment.fromStringtoDateByPattern(dateStr, FormatDateManagment.SHORT_DATE);
		System.out.println(date1.toLocaleString());

Calendar日历类的创建

Calendar类模仿日历功能,Calendar与Date没有任何继承关系,它们不能相互转换;Calender提供了对日期时间操作更灵活的方法支持,可以从Calendar获取与之相对应的Date对象,反之则不可以;SimpleDateFormat不能提供对Calendar的转换支持。

		Calendar cal = Calendar.getInstance();//获取与当前系统平台相关的默认日历对象
		System.out.println("当前是"+cal.get(Calendar.YEAR)+"年"+cal.get(Calendar.MONTH)+"月"+cal.get(Calendar.DATE)+"日");
		
		Calendar cal2 = Calendar.getInstance();//获取与给定的locale相关的日历对象
		Date japanDate = cal2.getTime();
		System.out.println(new SimpleDateFormat("yyyy-MM-dd a hh:mm:ss",Locale.JAPAN).format(japanDate));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值