Java日期處理類

導(dǎo)語

最重要的就是使用SimpleDateFormat類進(jìn)行日期格式的轉(zhuǎn)換。

主要內(nèi)容

  • Date類的使用
  • SimpleDateFormat類的使用
  • Calendar類的使用

具體內(nèi)容

Date類

在之前一直在編寫簡(jiǎn)單Java類孙援,但是所編寫的數(shù)據(jù)表與簡(jiǎn)單Java類的轉(zhuǎn)換里面缺少了Date數(shù)據(jù)類型帆卓,所以本部分就屬于簡(jiǎn)單Java類的最后的拼版腋舌。

在Java里面提供有一個(gè)java.util.Date的類塔嬉,它直接就表示當(dāng)前的日期時(shí)間阳惹。

范例:取得當(dāng)前的日期時(shí)間

import java.util.Date;

public class TestDemo {
    public static void main(String args[]) {
        Date date = new Date();
        System.out.println(date);  // 輸出對(duì)象信息
    }
}

輸出結(jié)果

Sat Sep 30 22:26:23 CST 2017

這個(gè)時(shí)候的確輸出了當(dāng)前的日期時(shí)間钱烟,只不過這個(gè)格式實(shí)在是難看晰筛。
一直以來強(qiáng)調(diào)過一個(gè)概念:long可以描述出日期時(shí)間數(shù)據(jù),那么這一點(diǎn)在Date類的方法上也是可以看見的拴袭,在Date類里面定義了如下的幾個(gè)重要方法:

  • 無參構(gòu)造:public Date()读第。
  • 有參構(gòu)造:public Date(long date)。
  • 轉(zhuǎn)換為long型:public long getTime()拥刻。

范例:Date與long之間轉(zhuǎn)換

public class TestDemo {
    public static void main(String args[]) {
        long cur = System.currentTimeMillis();
        Date date  = new Date(cur);
        System.out.println(date);
        System.out.println(date.getTime());
    }
}

輸出結(jié)果

Sat Sep 30 22:36:23 CST 2017
1506782205

以后的代碼編寫過程之中怜瞒,依然需要以上的轉(zhuǎn)換操作,尤其是getTime()方法泰佳。

日期格式化:SimpleDateFormat

java.text是一個(gè)專門實(shí)現(xiàn)國(guó)際化程序的開發(fā)包盼砍,而SimpleDateFormat是一個(gè)專門處理格式化日期的工具類,可以將Date型的對(duì)象轉(zhuǎn)換為String型的形式顯示逝她。而主要使用的是以下方法:

  • 構(gòu)造方法:public SimpleDateFormat(String pattem)浇坐,需要傳遞轉(zhuǎn)換格式。
  • 將Date轉(zhuǎn)換為String:public final String format(Date date)黔宛。
  • 將String轉(zhuǎn)換為Date:public Date parse(String source) throws ParseException近刘。

現(xiàn)在的關(guān)鍵就在于轉(zhuǎn)換格式上,對(duì)于常見的轉(zhuǎn)換單位:年(yyyy)、月(MM)觉渴、日(dd)介劫、時(shí)(HH)、分(mm)案淋、秒(ss)座韵、毫秒(SSS)。

范例:將日期格式化顯示(Date型數(shù)據(jù)變?yōu)镾tring型數(shù)據(jù))

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

public class TestDemo {
    public static void main(String args[]) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        String str = sdf.format(date);  // 將Date型變?yōu)榱薙tring型
        System.out.println(str);
    }
}

輸出結(jié)果

2017-09-30 22:50:29.312

除了可以將日期變?yōu)樽址馓呔部梢詫⒆址D(zhuǎn)換為日期誉碴。

范例:將字符串轉(zhuǎn)換為日期

public class TestDemo {
    public static void main(String args[]) throws Exception {
        String str = "2011-11-11 11:11:11.111";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date date = sdf.parse(str);  // 將字符串變?yōu)槿掌谛蛿?shù)據(jù)
        System.out.println(date);
    }
}

輸出結(jié)果

Fri Nov 11 11:11:11 CST 2011

在將字符串變?yōu)槿掌谛蛿?shù)據(jù)的時(shí)候,如果日期型數(shù)據(jù)給出的月不對(duì)瓣距,那么會(huì)自動(dòng)進(jìn)行進(jìn)位黔帕。如果給定的字符串與要轉(zhuǎn)換的格式不符合,那么就會(huì)出現(xiàn)異常蹈丸。

Calendar類

Date類和SimpleDate類兩個(gè)往往是一起使用的成黄,但是Calendar這個(gè)類主要是進(jìn)行一些簡(jiǎn)單的日期計(jì)算的。
Calender類定義:

public abstract class Calendar 
extends Object 
implements Serializable, Cloneable, Comparable<Calendar>

這是一個(gè)抽象類逻杖,那么應(yīng)該依靠子類進(jìn)行對(duì)象的實(shí)例化操作奋岁。但是在這個(gè)類里面它提供有一個(gè)static方法,此方法返回的正是本類對(duì)象:public static Calendar getInstance()荸百。

范例:取得當(dāng)前日期時(shí)間

import java.util.Calendar;

public class TestDemo {
    public static void main(String args[]) {
        Calendar cal = Calendar.getInstance();  // 取得本類對(duì)象
        StringBuffer buf = new StringBuffer();
        buf.append(cal.get(Calendar.YEAR)).append("-");
        buf.append(cal.get(Calendar.MONTH) + 1).append("-");  // 這個(gè)從0開始算
        buf.append(cal.get(Calendar.DAY_OF_MONTH)).append(" ");
        buf.append(cal.get(Calendar. HOUR_OF_DAY)).append(":");
        buf.append(cal.get(Calendar.MINUTE)).append(":");
        buf.append(cal.get(Calendar.SECOND));
        System.out.println(buf);
    }
}

輸出結(jié)果

2017-9-30 23:9:4

但是這個(gè)類在取得的時(shí)候可以進(jìn)行一些簡(jiǎn)單的計(jì)算厦取,例如:若干天后的日期,三天后的日期管搪。
修改代碼

import java.util.Calendar;

public class TestDemo {
    public static void main(String args[]) {
        Calendar cal = Calendar.getInstance();  // 取得本類對(duì)象
        StringBuffer buf = new StringBuffer();
        buf.append(cal.get(Calendar.YEAR)).append("-");
        buf.append(cal.get(Calendar.MONTH) + 1).append("-");  // 這個(gè)從0開始算
        buf.append(cal.get(Calendar.DAY_OF_MONTH) + 3).append(" ");
        buf.append(cal.get(Calendar. HOUR_OF_DAY)).append(":");
        buf.append(cal.get(Calendar.MINUTE)).append(":");
        buf.append(cal.get(Calendar.SECOND));
        System.out.println(buf);
    }
}

輸出結(jié)果

2017-10-3 23:12:8

如果是日期計(jì)算虾攻,要比Date容易,如果使用Date要進(jìn)行天的計(jì)算更鲁,那么就需要使用long完成了霎箍。

總結(jié)

  • 以后數(shù)據(jù)庫(kù)中的日期型就使用java.uitl.Date表示。
  • 代碼模型:SimpleDateFormat類實(shí)現(xiàn)String與Date間的互相轉(zhuǎn)換澡为。

更多內(nèi)容戳這里(整理好的各種文集)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漂坏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子媒至,更是在濱河造成了極大的恐慌顶别,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拒啰,死亡現(xiàn)場(chǎng)離奇詭異驯绎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谋旦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門剩失,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屈尼,“玉大人,你說我怎么就攤上這事拴孤∑⑵纾” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵演熟,是天一觀的道長(zhǎng)鞭执。 經(jīng)常有香客問我,道長(zhǎng)芒粹,這世上最難降的妖魔是什么蚕冬? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮是辕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猎提。我一直安慰自己获三,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布锨苏。 她就那樣靜靜地躺著疙教,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伞租。 梳的紋絲不亂的頭發(fā)上贞谓,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音葵诈,去河邊找鬼裸弦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛作喘,可吹牛的內(nèi)容都是我干的理疙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼泞坦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼窖贤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起贰锁,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤赃梧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后豌熄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體授嘀,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年锣险,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粤攒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片所森。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖夯接,靈堂內(nèi)的尸體忽然破棺而出焕济,到底是詐尸還是另有隱情,我是刑警寧澤盔几,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布晴弃,位于F島的核電站,受9級(jí)特大地震影響逊拍,放射性物質(zhì)發(fā)生泄漏上鞠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一芯丧、第九天 我趴在偏房一處隱蔽的房頂上張望芍阎。 院中可真熱鬧,春花似錦缨恒、人聲如沸谴咸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岭佳。三九已至,卻和暖如春萧锉,著一層夾襖步出監(jiān)牢的瞬間珊随,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工柿隙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叶洞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓禀崖,卻偏偏與公主長(zhǎng)得像京办,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子帆焕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理惭婿,服務(wù)發(fā)現(xiàn),斷路器叶雹,智...
    卡卡羅2017閱讀 134,695評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法财饥,類相關(guān)的語法,內(nèi)部類的語法折晦,繼承相關(guān)的語法钥星,異常的語法,線程的語...
    子非魚_t_閱讀 31,660評(píng)論 18 399
  • import java.text.SimpleDateFormat;import java.util.Calend...
    霙愔閱讀 751評(píng)論 0 2
  • 1 劉同當(dāng)年在他的新書《你的孤獨(dú)满着,雖敗猶榮》里說:讀大學(xué)的價(jià)值也許在于能認(rèn)識(shí)未來幾十年最重要的朋友谦炒,能分辨哪些人自...
    阿雅克肖Aay閱讀 162評(píng)論 0 1
  • 在Swift中贯莺,如果需要把一個(gè)字符串根據(jù)特定的分隔符拆分(split)成字符串?dāng)?shù)組,通常有如下兩種方法: 1.使用...
    西門丨不吹雪閱讀 7,461評(píng)論 0 3