Java基础入门(一):Java里面的时间
這是一篇非常基礎(chǔ)的Java技術(shù)文章,簡(jiǎn)單的說(shuō)就是一個(gè)知識(shí)點(diǎn),是自己在寫業(yè)務(wù)代碼時(shí)的一點(diǎn)總結(jié),大神請(qǐng)繞行。
在 java 里面 表示 時(shí)間 ,一種是 java.util.Date 類,一種是 long 型的Unix時(shí)間戳,還有一種是String的字符串,當(dāng)然前兩種時(shí)間表示方法是時(shí)間定義的,可以對(duì)其進(jìn)行操作計(jì)算得到一定的時(shí)間含義的,String字符串大多是前端顯示之用,那當(dāng)這三種形式共存時(shí),必不可少就需要類型之間的轉(zhuǎn)換及其對(duì)時(shí)間上的計(jì)算操作,這是在做一些業(yè)務(wù)功能上經(jīng)常會(huì)用到的,現(xiàn)在總結(jié)一下通常所用的方法,以來(lái)簡(jiǎn)化后面再用到此類時(shí)能節(jié)省一定的時(shí)間而不需每次都要找度娘。
小典故:Unix時(shí)間戳,表示 格林威治時(shí)間1970年01月01日00時(shí)00分00秒起至現(xiàn)在的總秒數(shù),如果系統(tǒng)為32位系統(tǒng),則會(huì)因?yàn)槲粩?shù)不夠的情況下,在格林威治時(shí)間2038年01月19日03時(shí)14分07秒發(fā)生溢出,導(dǎo)致系統(tǒng)癱瘓,但目前看來(lái)應(yīng)該 大部分 系統(tǒng)都是 64位的吧,算了算貌似有生之年可以到那一天,不曉得會(huì)發(fā)生什么事情不。:-D
類型轉(zhuǎn)換
大多是 String 與 Date 之間的轉(zhuǎn)換 ,有一套yyyy-MM-dd HH:mm:ss的表示想必大家應(yīng)該都知道
在這里和大家推薦一下Apache的 DateUtils , 這個(gè)方法 歸納了一些日期上的操作,讓你用一句兩句話便搞定時(shí)間上的操作,真乃神器也,有空看一下它的源碼,你就會(huì)知道其實(shí)還是那么幾個(gè)類,通常比較好的業(yè)務(wù)代碼,會(huì)自己 再封裝一個(gè)DateUtil ,去歸納總結(jié)一下在本業(yè)務(wù)中需要用到的一些常用的日期操作和符合本系統(tǒng)的日期表達(dá)方式。
String 轉(zhuǎn)Date
String[]patters=newString[]{"yyyy-MM-ddHH:mm:ss"}; Date date = DateUtils.parseDate(time,patters)Date 轉(zhuǎn)String
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str = format.format(date);時(shí)間戳轉(zhuǎn)Date
long timeStamp = 12345678L; Date time = new Date(timeStamp);時(shí)間戳要說(shuō)一句,一般從Date 里面的 getTime()方法獲得的是ms級(jí)別的10位數(shù)字,而業(yè)務(wù)代碼里面一般要用到s級(jí)的,因此不要忘記除以1000之后再使用。再推薦一個(gè)日期和時(shí)間戳轉(zhuǎn)換的網(wǎng)站,供業(yè)務(wù)功能調(diào)試及測(cè)試使用,當(dāng)然你也可以自己寫一個(gè)~
Date轉(zhuǎn)Calendar
Date date = new Date(); Calendar c = DateUtils.toCalendar(date); // 注意try catch Exception時(shí)間操作
Apache 的 DateUtils 提示已經(jīng)提供了大部分對(duì) 日期 增減的 方法,看里面的方法就會(huì)知道:
但如果你對(duì)時(shí)間有特別的需求,比如說(shuō)需要取某個(gè)時(shí)間的 小時(shí) 數(shù),這個(gè)時(shí)候 就需要用到 Calendar ,因此一般的操作是 將Date 轉(zhuǎn)換成Calendar ,再利用Caleadar對(duì)時(shí)間進(jìn)行相應(yīng)的操作,貼了一下相關(guān)代碼,給個(gè)參考
Date date = new Date(); Calendar payTimeCal = DateUtils.toCalendar(date); int payHour = payTimeCal.get(Calendar.HOUR_OF_DAY); // 取 小時(shí)Calendar startTimeCal = DateUtils.toCalendar(date); startTime.set(payTimeCal.get(Calendar.YEAR),payTimeCal.get(Calendar.MONTH),payTimeCal.get(Calendar.DATE)); // 給startTime 設(shè)置和 PayTimeCal 一樣的 年月日更多Calendar類的用法等你挖掘,一般看看相應(yīng)源碼就能滿足 你當(dāng)時(shí)業(yè)務(wù)時(shí)間功能上的需求。
這又印證了一句古話,See the source code, see the world (嗯,是我說(shuō)的)。
總結(jié)
以上是生活随笔為你收集整理的Java基础入门(一):Java里面的时间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Angular2视图操作之ViewChi
- 下一篇: python scrapy 抓取脚本之家