Java 日期时间
Date类
java.util包提供了Date类来封装当前的日期和时间。Date类提供两个构造函数来实例化Date对象。
1、使用当前日期和时间来初始化对象
Date()
2、接收一个参数,该参数是从1970年1月1日起的毫秒数
Date(long millisec)
其它方法
boolean after(Date date)
若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
boolean before(Date date)
若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
Object clone()
返回此对象的副本
int compareTo(Date date)
比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
int compareTo(Object obj)
若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。
boolean equals(Object date)
当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
long getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
int hashCode()
返回此对象的哈希码值。
void setTime(long time)
用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
String toString()
把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
SimpleDateFormat类
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。
Date dNow = new Date(); SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println("当前时间为:"+ft.format(dNow));
注意区分大小写,输出结果为:当前时间为:2019-09-28 18:50:00
日期和时间的格式化编码
字母 | 描述 | 示例 |
G | 纪元标记 | AD |
y | 四位年份 | 2001 |
M | 月份 | July or 07 |
d | 一个月的日期 | 10 |
h | A.M./P.M(1~12)格式小时 | 12 |
H | 一天中的小时0~23 | 22 |
m | 分钟数 | 55 |
s | 秒数 | 30 |
S | 毫秒数 | 234 |
E | 星期几 | Tuesday |
D | 一年中的日子 | 360 |
F | 一个月中第几周的周几 | 2(second Wed in July) |
w | 一年中第几周 | 40 |
W | 一个月中第几周 | 1 |
a | A.M./P.M.标记 | PM |
k | 一天中的小时(1~24) | 24 |
K | A.M./P.M.(0~11)格式小时 | 10 |
z | 时区 | Eastern Standard Time |
' | 文字定界符 | Delimiter |
" | 单引号 | ' |
解析字符串为时间
SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); String input = ""; Date t; try{ t=ft.parse(input); }catch(ParseException e){ }
使用printf格式化日期
printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。
转换符 | 说明 | 示例 |
C | 包括全部日期和时间信息 | 星期六 十月 27 14:21:20 CST 2007 |
F | "年-月-日"格式 | 2007-10-27 |
D | “月/日/年”格式 | 10/27/2007 |
r | “HH:MM:SS PM”格式 | 02:25:51 下午 |
T | “HH:MM:SS”格式 | 14:28:56 |
R | “HH:MM”格式 | 14:28 |
Date date = new Date(); System.out.printf("全部日期和时间信息:%tc%n",date); System.out.printf("年-月-日格式:%tF%n",date);
Calendar类
Calendar类是比Date类更强大的一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。