愉快且方便的處理時(shí)間-- LocalDate

java中做時(shí)間處理時(shí)一般會(huì)采用java.util.Date,但是相比于Date來(lái)說(shuō)嘱支,還有更好的選擇 --java.time.LocalDate贩汉。

這是jdk8中新增的日期處理類盖桥,同時(shí)新增的還有java.time.LocalTime、java.time.LocalDateTime等镊讼。大多吐槽Date的是其對(duì)于月份的處理是從0開(kāi)始的宽涌,取得正確月份還得往后偏移一位。Date內(nèi)容很豐富蝶棋,不但包含年月日卸亮,還包含時(shí)間。

相比Date來(lái)說(shuō)嚼松,LoalDate更安全嫡良、更精確也更明確。LocalDate不包含時(shí)間献酗,只是單純的年月日寝受,要精確到時(shí)分秒甚至毫秒的就需要用java.time.LocalDateTime了。

1罕偎、【LocalDate】
一般用法如下:

// 取當(dāng)前日期:

LocalDate today = LocalDate.now(); // -> 2014-12-24

// 根據(jù)年月日取日期:

LocalDate crischristmas = LocalDate.of(2014, 12, 25); // -> 2014-12-25

// 根據(jù)字符串群艹巍:

LocalDate endOfFeb = LocalDate.parse("2014-02-28"); // 嚴(yán)格按照ISO yyyy-MM-dd驗(yàn)證,02寫(xiě)成2都不行颜及,當(dāng)然也有一個(gè)重載方法允許自己定義格式

LocalDate.parse("2014-02-29"); // 無(wú)效日期無(wú)法通過(guò):DateTimeParseException: Invalid date

一般日期轉(zhuǎn)換:


// 取本月第1天:

LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); // 2017-03-01

// 取本月第2天:

LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); // 2017-03-02

// 取本月最后一天甩苛,再也不用計(jì)算是28,29俏站,30還是31:

LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); // 2017-12-31

// 取下一天:

LocalDate firstDayOf2015 = lastDayOfThisMonth.plusDays(1); // 變成了2018-01-01

// 取2017年1月第一個(gè)周一讯蒲,用Calendar要死掉很多腦細(xì)胞:

LocalDate firstMondayOf2015 = LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2017-01-02

2、【LocalTime】
LocalTime只包含時(shí)間肄扎,獲得當(dāng)前時(shí)間:


LocalTimenow =LocalTime.now();// 23:11:08.006

構(gòu)造時(shí)間:


LocalTime zero =LocalTime.of(0, 0, 0);// 00:00:00
LocalTimemid =LocalTime.parse("12:00:00");// 12:00:00

3墨林、JDBC
最新JDBC映射將把數(shù)據(jù)庫(kù)的日期類型和Java 8的新類型關(guān)聯(lián)起來(lái):


SQL -> Java--------------------------date -> LocalDate

time -> LocalTime

timestamp -> LocalDateTime

4、Date和LocalDateTime互相轉(zhuǎn)換

// 01. java.util.Date --> java.time.LocalDateTime
public void UDateToLocalDateTime() {
    java.util.Date date = new java.util.Date();
    Instant instant = date.toInstant();
    ZoneId zone = ZoneId.systemDefault();
    LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
}

// 02. java.util.Date --> java.time.LocalDate
public void UDateToLocalDate() {
    java.util.Date date = new java.util.Date();
    Instant instant = date.toInstant();
    ZoneId zone = ZoneId.systemDefault();
    LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
    LocalDate localDate = localDateTime.toLocalDate();
}

// 03. java.util.Date --> java.time.LocalTime
public void UDateToLocalTime() {
    java.util.Date date = new java.util.Date();
    Instant instant = date.toInstant();
    ZoneId zone = ZoneId.systemDefault();
    LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
    LocalTime localTime = localDateTime.toLocalTime();
}


// 04. java.time.LocalDateTime --> java.util.Date
public void LocalDateTimeToUdate() {
    LocalDateTime localDateTime = LocalDateTime.now();
    ZoneId zone = ZoneId.systemDefault();
    Instant instant = localDateTime.atZone(zone).toInstant();
    java.util.Date date = Date.from(instant);
}


// 05. java.time.LocalDate --> java.util.Date
public void LocalDateToUdate() {
    LocalDate localDate = LocalDate.now();
    ZoneId zone = ZoneId.systemDefault();
    Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
    java.util.Date date = Date.from(instant);
}

// 06. java.time.LocalTime --> java.util.Date
public void LocalTimeToUdate() {
    LocalTime localTime = LocalTime.now();
    LocalDate localDate = LocalDate.now();
    LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
    ZoneId zone = ZoneId.systemDefault();
    Instant instant = localDateTime.atZone(zone).toInstant();
    java.util.Date date = Date.from(instant);
}

來(lái)源:客行者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末犯祠,一起剝皮案震驚了整個(gè)濱河市旭等,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌衡载,老刑警劉巖搔耕,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異痰娱,居然都是意外死亡弃榨,警方通過(guò)查閱死者的電腦和手機(jī)菩收,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鲸睛,“玉大人坛梁,你說(shuō)我怎么就攤上這事±靶祝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵拴念,是天一觀的道長(zhǎng)钧萍。 經(jīng)常有香客問(wèn)我,道長(zhǎng)政鼠,這世上最難降的妖魔是什么风瘦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮公般,結(jié)果婚禮上万搔,老公的妹妹穿的比我還像新娘。我一直安慰自己官帘,他們只是感情好瞬雹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著刽虹,像睡著了一般酗捌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涌哲,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天胖缤,我揣著相機(jī)與錄音,去河邊找鬼阀圾。 笑死哪廓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的初烘。 我是一名探鬼主播涡真,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼账月!你這毒婦竟也來(lái)了综膀?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤局齿,失蹤者是張志新(化名)和其女友劉穎剧劝,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抓歼,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讥此,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年拢锹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萄喳。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卒稳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出他巨,到底是詐尸還是另有隱情充坑,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布染突,位于F島的核電站捻爷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏份企。R本人自食惡果不足惜也榄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望司志。 院中可真熱鬧甜紫,春花似錦、人聲如沸骂远。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吧史。三九已至邮辽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贸营,已是汗流浹背吨述。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钞脂,地道東北人揣云。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像冰啃,于是被迫代替她去往敵國(guó)和親邓夕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348