8.3-全棧Java筆記:時間處理相關類(上)

時間處理相關類

“時間如流水,一去不復返”,時間是一個一維的東東。所以,我們需要一把刻度尺來區表達和度量時間。在計算機世界,我們把1970?年?1?月?1?日?00:00:00定為基準時間,每個度量單位是毫秒(1秒的千分之一)。

我們用long類型的變量來表示時間,從基準時間往前幾億年,往后幾億年都能表示。如果想獲得現在時刻的“時刻數值”,可以使用:

????long??now1 =?System.currentTimeMillis();

這個“時刻數值”是所有時間類的核心值,年月日都是根據這個“數值”計算出來的。我們工作學習涉及的時間相關類有如下這些:

圖1?日期時間相關類

Date時間類(java.util.Date)

在標準Java類庫中包含一個Date類。它的對象表示一個特定的瞬間,精確到毫秒。

?Date()分配一個Date對象,并初始化此對象為當前的日期和時間精確到毫秒)。

?(long?date)?分配?Date?對象并初始化此對象,以表示自從標準基準時間(稱為“歷元(epoch)”,即?1970?年?1?月?1?日?00:00:00 GMT)以來的指定毫秒數。

?boolean?after(Date?when)?測試此日期是否在指定日期之后。?

?booleanbefore(Date?when)??測試此日期是否在指定日期之前。

?boolean?equals(Object?obj)?比較兩個日期的相等性。

??long?getTime()返回自?1970?年?1?月?1?日?00:00:00 GMT?以來此?Date?對象表示的毫秒數。

?String?toString()?把此?Date?對象轉換為以下形式的?String:

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

【示例1Date類的使用

import?java.util.Date;

public?class?Test {

????public?static?void?main(String[] args) {

?????? Date date1 =?new?Date();

?????? System.out.println(date1.toString());

???????long?i = date1.getTime();

?????? Date date2 =?new?Date(i - 1000);

?????? Date date3 =?new?Date(i + 1000);

?????? System.out.println(date1.after(date2));

?????? System.out.println(date1.before(date2));

?????? System.out.println(date1.equals(date2));

?????? System.out.println(date1.after(date3));

?????? System.out.println(date1.before(date3));

?????? System.out.println(date1.equals(date3));

?????? System.out.println(

???????????new?Date(1000L * 60 * 60 * 24 * 365 * ? 39L).toString());? //why?

??? }

}

查看API文檔大家可以看到很多方法過時了,JDK1.1之前的Date包含了:日期操作、字符串轉化成時間對象,時間對象。?

JDK1.1之后,日期操作使用:Canlendar類來。?字符串轉化:DateFormat。

DateFormat類和SimpleDateFormat類

·作用

把時間對象轉化成指定格式的字符串。反之,把指定格式的字符串轉化成時間對象。

DateFormat是一個抽象類,一般使用SimpleDateFormat類。?

【示例2DateFormat類和SimpleDateFormat類的使用

import?java.text.ParseException;

import?java.text.SimpleDateFormat;

import?java.util.Date;

public?class?Test {

????public?static?void?main(String[] args)?throws?? ParseException {

??????? //newSimpleDateFormat對象

?????? SimpleDateFormat s1 =?new?? SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

?????? SimpleDateFormat s2 =?new?? SimpleDateFormat("yyyy-MM-dd");

???????//將時間對象轉換成字符串

?????? String daytime = s1.format(new?Date());

?????? System.out.println(s2.format(new?Date()));

?????? System.out.println(new?? SimpleDateFormat("hh:mm:ss").format(new?Date()));

???????//將符合指定格式的字符串轉成成時間對象.字符串格式需要和指定格式一致。

?????? String time = "2007-10-7";

?????? Date date = s2.parse(time);

?????? System.out.println("date1: " + date);

?????? time = "2007-10-7 20:15:30";

?????? date = s1.parse(time);

?????? System.out.println("date2: " + date);

??? }

}

表??格式化字符的含義

字母

日期或時間元素

表示

示例

G

Era?標志符

Text

AD

y

Year

1996;?96

M

年中的月份

Month

July;?Jul; ??07

w

年中的周數

Number

27

W

月份中的周數

Number

2

D

年中的天數

Number

189

d

月份中的天數

Number

10

F

月份中的星期

Number

2

E

星期中的天數

Text

Tuesday;?Tue

a

Am/pm?標記

Text

PM

H

一天中的小時數(0-23)

Number

0

k

一天中的小時數(1-24)

Number

24

K

am/pm?中的小時數(0-11)

Number

0

h

am/pm?中的小時數(1-12)

Number

12

m

小時中的分鐘數

Number

30

s

分鐘中的秒數

Number

55

S

毫秒數

Number

978

z

時區

General ? time zone

Pacific Standard Time;?PST;?GMT-08:00

Z

時區

RFC ? 822 time zone

0800

下節,我們繼續討論「時間處理相關類」。




「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發經驗,曾在神州數碼、航天院某所研發中心從事軟件設計及研發工作,從小白逐漸做到工程師、高級工程師、架構師。精通Java平臺軟件開發,精通JAVAEE,熟悉各種流行開發框架。


筆記包含從淺入深的六大部分:

A-Java入門階段

B-數據庫從入門到精通

C-手刃移動前端和Web前端

D-J2EE從了解到實戰

E-Java高級框架精解

F-Linux和Hadoop?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,769評論 18 399
  • 第05天API 今日內容介紹 ·Object類& System類 ·日期相關類 ·包裝類&正則表達式 ·Date對...
    chcvn閱讀 433評論 0 1
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,839評論 0 11
  • BigInteger類 BigInteger類概述可以讓超過Integer范圍內的數據進行運算 構造方法publi...
    清風沐沐閱讀 1,223評論 0 3
  • 注意:發展你思維(和寫作)技能的最好方式之一就是在日記本上記錄下你的觀察、問題和想法。如果時間允許,反思你為什么會...
    張添雅閱讀 183評論 0 1