Java学习日志14.16(第一阶段基础)

2018.11.1 11:06 阴

14.16_常见对象(Date类的概述和方法使用)(掌握)

** * A:Date类的概述
* 类 Date 表示特定的瞬间,精确到毫秒。

  • B:构造方法
    • public Date()
    • 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
    • public Date(long date)
    • 分配 Date 对象并初始化此对象,
    • 以表示自从标准基准时间(称为“历元(epoch)”,
    • 即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
  • C:成员方法
    • public long getTime()
      返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

    • public void setTime(long time)
      setTime(long time)
      设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
      拓展: (1)肯汤逊的小故事
      1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,
      开始着手创造一个全新的革命性的操作系统,
      他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。
      随后,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,
      重写了UNIX,新版于1971年发布。
      1970年1月1日 算 UNIX 和 C语言 生日。
      最初计算机操作系统是32 位,而时间也是用 32 位表示。
      32 位能表示的最长时间是 68 年,而实际上到 2038年 01 月 19 日 03 时 14 分 07
      秒,便会到达最大时间,过了这个时间点,所 有 32 位操作系统时间便会变 为
      10000000 00000000 00000000 00000000

      也就是1901年 12月 13 日 20时 45 分 52 秒,这样便会出现时间回归的现象,很多软件便会运 行异常了。
      因为用32 位来表示时间的最大间隔是 68 年,而最早出现的 UNIX 操作系统考虑到计算
      机产生的年代和应用的时限综合取了 1970 年 1 月 1 日作为 UNIX TIME 的纪元时间 ( 开始
      时间 ) ,而 java 自然也遵循了这一约束。

      至于时间回归的现象相信随着64 为操作系统 的产生逐渐得到解决,因为用 64 位操作
      系统可以表示到 292,277,026,596年 12月 4 日 15时 30 分 08 秒

      (2)面System.out.println(new Date(0)),打印出来的时间是8点而非0点,
      原因是存在系统时间和本地时间的问题,其实系统时间依然是0点,只不过我的电脑时区
      设置为东8区,故打印的结果是8点。

package com.heima.otherclass;
import java.util.Date;

public class Demo_Dare {
	public static void main(String[] args) {
		Date d1 = new Date();	//创建对象,存储当前系统时间
		System.out.println("无参数的时间:");
		System.out.println(d1);
		System.out.println("有参数的时间:");
		Date d2 = new Date(1000);	//参数为毫秒值,显示从1970年1月1日00:00:00以来的毫秒值
		System.out.println(d2);
		Date d3 = new Date();
		/*long t = d3.getTime();
		System.out.println(t);*/
		System.out.println("从1970.1.1到程序运行时的毫秒值为:");
		System.out.println(d3.getTime());	//获取从1970.1.1起的毫秒值
		System.out.println();
		d1.setTime(1000);		//设置d1 为1970.1.1+对应参数毫秒值的时间
		System.out.println(d1);
	}
}

程序结果:
无参数的时间:
Thu Nov 01 10:50:36 CST 2018
有参数的时间:
Thu Jan 01 08:00:01 CST 1970
从1970.1.1到程序运行时的毫秒值为:
1541040636981
无参数的时间的Date对象d1被修改后的值为:
Thu Jan 01 08:00:01 CST 1970

14.17_常见对象(SimpleDateFormat类实现日期和字符串的相互转换)(掌握)

** A:DateFormat类的概述
* DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat(包括了父类所有的方法)

  • B:SimpleDateFormat构造方法
    • public SimpleDateFormat()
    • public SimpleDateFormat(String pattern)
  • C:成员方法
    • public final String format(Date date)
      将一个 Date 格式化为日期/时间字符串。
    • public Date parse(String source)
      解析字符串的文本,生成 Date。
      代码练习:
package com.heima.otherclass;

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

public class Demo_SimpleDateFormat {
	public static void main(String[] args) throws ParseException {
	Date d = new Date();	//获取当前系统时间
	System.out.println("当前系统时间:");
	System.out.println(d);	//显示当前时间
	//demo1();
	demo2(d);
	demo3(d);
	String t = "2018年11月1日 12:04:08";	//当前时间的数字字符串
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");	//创建自定义日期格式化类对象
	System.out.println("自定义时间的自定义格式化表示:");
	Date d2 = sdf.parse(t);	//将时间字符串转换为日期对象,这里会抛出异常,因为避免字符串不符合格式
	System.out.println(d2);
	}

	private static void demo3(Date d) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");	//创建自定义日期格式化类对象
		System.out.println("自定义日期格式化类对象表示当前时间");
		System.out.println(sdf.format(d));
	}

	private static void demo2(Date d) {
		SimpleDateFormat sdf = new SimpleDateFormat();	//创建固定好的日期格式化类对象
		System.out.println("日期格式化后的当前时间:");
		System.out.println(sdf.format(d));
	}

	/*private static void demo1() {
		DateFormat df = new DateFormat(); //抽象类不能被实例化
		DateFormat df2 = DateFormat.getDateInstance();	//相当于是父类引用指向之类对象,该方法底层实现创建对象,返回一个子类对象
	}*/
}

程序结果:
当前系统时间:
Thu Nov 01 12:17:57 CST 2018
日期格式化后的当前时间:
18-11-1 下午12:17
自定义日期格式化类对象表示当前时间
2018年11月01日 12:17:57
自定义时间的自定义格式化表示:
Thu Nov 01 12:04:08 CST 2018

猜你喜欢

转载自blog.csdn.net/binge_kong/article/details/83617240
今日推荐