Java 中的日期与时间处理

Java 中的日期与时间处理

题外

工作以来有些迷茫,一开始了解了一下 SSM 框架的使用,而在公司的实际开发中并非如此,而是在 SSH 框架的基础上使用,又去稍微看了一下 Struts2,而 Hibernate 还没开始去了解。

近来突然觉得,框架其实不是重点,只是为了快速开发而已。所以开始反过来,继续补习基础的知识。

这一篇是马士兵老师讲的 JavaSE基础专题_日期处理 的一些笔记,而马老师讲这个专题时,主要的还是在教一种学习的思路,更多的靠自学。

日期与时间

主要的相关的类

java.lang.System

java.util.Date

java.util.Calendar

java.util.GregorianCalendar

java.util.TimeZone

java.text.DateFormat

java.text.SimpleDateFormat

java.sql.Date

java.sql.Time

java.sql.Timestamp

而我们常用的主要是 java.util.Date,java.util.Calendar,java.text.SimpleDateFormat 和 java.sql.Timestamp。大多用在与数据库打交道,故在从数据库中获取数据之类的,大多使用 Timestamp 来操作。

格式转换例子

    // 默认将当前时间传入,例如 Thu Oct 19 21:42:19 CST 2017
    Date d = new Date(); 
    System.out.println("Date 对象中的时间:" + d);

    // 设置时间格式
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 

    // 格式化日期返回 String 类型,format 中传入 Date 类型或者其子类(例如下面的 Timestamp 类)
    String s = sdf.format(d); 
    System.out.println("SimpleDateFormat 格式化后的字符串:" + s);

    // 时间戳,数据库中获取的值
    Timestamp ts = Timestamp.valueOf(s); 
    // Timestamp format must be yyyy-MM-dd hh:mm:ss[.fffffffff],如果不是会报错
    System.out.println("Timestamp 对象中的时间:" + ts);

    // 初始化日历 默认也是存入当前时间
    Calendar c = Calendar.getInstance(); 
    c.setTime(ts); // 设置时间,存入 Date 类及其子类
    System.out.println("Calendar 获取时间所在月份中的第几天:" + c.get(Calendar.DAY_OF_MONTH));

    /*
    运行结果:
    ------------------------------------
    Date 对象中的时间:Thu Oct 19 22:01:15 CST 2017
    SimpleDateFormat 格式化后的字符串:2017-10-19 10:01:15
    Timestamp 对象中的时间:2017-10-19 10:01:15.0
    Calendar 获取时间所在月份中的第几天:19
     */

心得

主要学习的是思路,由已知的知识拓展到自己所不了解,或者不知道的。

一开始时只是知道 Date 类,使用之中在 API 文档中寻找 Date 类的方法,随后便会发现有些方法已经被废弃了,而废弃的后面就会告诉我们一些替代的方法。例如 Date 类中的 getHours 方法的描述:

Deprecated. 
As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY).

于是乎,我们根据描述去找到 java.util.Calendar 这个类进行知识的拓展。这就是我们所需要的学习方法。

下面附上马士兵老师推荐的自学顺序

1. 查文档、做实验
2. Google
    1. 关键词的选择
        由精细到粗化
    2. 略读页面介绍,分析可能性
        超过 5 页眉找到,不要往后翻
    3. 先中文,后英文
3. 论坛
    1. 问题问清楚
    2. www.csdn.net
    3. 国外的论坛

后记

本文基于个人的学习
分享出来纯当给大家参考一下,也当作自己的笔记

马士兵老师的教程虽然相对于其他教程距今比较久远,但是底层的东西以及思想是不容易变化的,还是值得学习学习的。

编辑:HochenChong
时间:2017-10-19

你可能感兴趣的:(Java,基础)