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