【Java学习记录】二十 时间相关类

在计算机世界,我们把1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一)。

为什么要从1970年1月1日0时0分0秒开始呢?原来 Unix 就是在那个时代产生的,1969 年发布的雏形,最早是基于硬件 60Hz 的时间计数。

1971年底出版的《Unix Programmer's Manual》里定义的 Unix Time 是以 1971年1月1日00:00:00 作为起始时间,每秒增长 60。考虑到 32 位整数的范围,如果每秒 60 个数字,则两年半就会循环一轮,于是改成以秒为计数单位。循环周期有136年之长,就不在乎起始时间是 1970 还是 1971 年,遂改成人工记忆、计算比较方便的1970年。(参考https://www.jianshu.com/p/0693480ee934)

我们用long类型的变量来表示时间,从基准时间往前几亿年,往后几亿年都能表示。如果想获得现在时刻的“时刻数值”,可以使用:

long now = System.currentTimeMillis();

与时间日期相关的常用类: 

 Date时间类(java.util.Date)

其实Date类中的很多方法都已经过时了,JDK1.1之后,日期操作一般使用Calendar类,而字符串的转化使用DateFormat类。

这里我们介绍常用的一些方法:

1       Date() 分配一个Date对象,并初始化此对象为系统当前的日期和时间,可以精确到毫秒)
2 Date(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数

3

boolean after(Date when)测试此日期是否在指定日期之后
4booleanbefore(Date when)测试此日期是否在指定日期之前
5boolean equals(Object obj)比较两个日期的相等性
6long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
7String toString() 

把此 Date 对象转换为以下形式的 String:

dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun、 Mon、Tue、Wed、 Thu、 Fri、 Sat)。

DateFormat类和SimpleDateFormat类

把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。

DateFormat是一个抽象类,一般使用它的的子类SimpleDateFormat类来实现。

时间对象和指定格式的字符串相互转化。

  • 格式化:Date对象->String字符串
  • 解析:String->Date对象

构造方法:可以指定模板,使用模板进行格式化和解析的操作。

SimpleDateFormat(String s):模板:"yyyy/MM/dd HH:mm:ss"

如何进行格式化可以通过查表得到: 

例子:

package cn.sxt.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestTimeFormat {
    public static void main(String[] args) throws ParseException {
    	
        // new出SimpleDateFormat对象
        SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        SimpleDateFormat s2 = new SimpleDateFormat("yyyy-MM-dd");
        
        // 将时间对象转换成字符串
        String daytime = s1.format(new Date());   //new Date()为当前时间
        System.out.println(daytime);
        System.out.println(s2.format(new Date())); //按照s2中规定格式输出
        System.out.println(new SimpleDateFormat("hh:mm:ss").format(new Date()));
        
        // 将符合指定格式的字符串转成成时间对象.字符串格式需要和指定格式一致。
        String time = "2007-10-7";  //写成s2规定样子的字符串
        Date date = s2.parse(time);  //转成时间
        System.out.println("date1: " + date);
        time = "2007-10-7 20:15:30"; //写成s1规定样子的字符串
        date = s1.parse(time);   //转成时间
        System.out.println("date2: " + date);
    }
}

 

  Calendar日历类

Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。

GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程芝士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值