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