10.11-Java中的时间与日期

Date类(java.util.Date)

该类的每一个实例用来描述时间(只能描述,不能操作)

其内部维护了一个long值。记录值自1970年1月1日到当前时间的毫秒差

例子

package day10_11;

import java.util.Date;

public class DateDemo {
	/**
	 * Date类在设计上存在两个问题
	 * 1.时区
	 * 2.千年虫(计算机处理时间的BUG)
	 */
	public static void main(String[] args) {
		/*
		 * 无参构造器 Date()
		 * 该构造器创建出的对象默认表示当前系统时间
		 */
		Date now = new Date();
		System.out.println(now);
		/*
		 * long getTime()
		 * 获取当前date对象描述的时间距离1970年1月1日的毫秒差
		 */
		long ms = now.getTime();
		System.out.println(ms);
		//计算明天这一刻的毫秒值
		ms+=24*60*60*1000;
		/*
		 * 有参构造器 Date(long time)
		 * 创建一个date对象来描述给定毫秒值所表示的时间
		 */
		Date td = new Date(ms);
		System.out.println(td);
		/*
		 * void setTime(long time)
		 * 使当前Date对象描述给定毫秒值所表示的时间
		 */
		now.setTime(ms);
		System.out.println(now);
	}
}

SimpleDateFormat类

使用一个特殊的字符串来描述一个时间格式

并使用该时间格式作为桥梁再Date与String相互转换

Date<--SimpleDateFormat(桥梁类)-->String类

时间格式字符串中使用的特殊字符

  • y 表示年份

    • yy两位数年份

    • yyyy 四位数年份

  • M 表示月

    • MM表示两位数的月份

  • d 表示日

    • dd 表示两位数的日期

  • h 表示小时(12小时制)

  • H 表示小时(24小时制)

    • hh/HH表示两位数的小时

  • m 表示分钟

    • mm表示两位数的分钟

  • s 表示秒

    • ss表示两位数的秒

  • E 表示星期

  • a 表示上下午

注意:在一个时间格式容器中出现的其他字符按意愿来显示

例子一:Date对象转换为字符串

例子二:字符串转换为Date对象

DateFormat类

该类可以根据给定的地区将Date转换为String

不同的地区对应的时间格式字符串是预定义的

例子

Calendar类

日历类,用于操作时间

Calendar类是一个抽象类,不能直接实例化

使用其自身提供的工厂方法getInstance()来获取实例

该方法会根据当前系统所在地区,自动判定应该使用哪一个子类实现

例子

操作时间的方式

获取某个时间单位的值(get)

给某个时间单位设置值(set)

计算时间 (add)

例子-获取某个时间单位的值(get)

例子-给某个时间单位设置值(set)

例子-计算时间 (add)

综合练习

总结

String/Date/Calendar三者之间的关系

String->SimpleDateFormat.parse()->Date

Date->Calendar.setTime()->Calendar

Calendar->Calendar.getTime()->Date

Date->SimpleDateFormat.parse()->String

最后更新于