獲取當前時間前一小時(比如hdfs目錄就是按照年月日小時來分級的)
阿新 • • 發佈:2019-01-09
直接調這個方法就可以
package emg.util import java.text.SimpleDateFormat import java.util.{Calendar, Date} /** * @Auther: sss * @Date: 2018/12/26 18:15 * @Description: */ object Time { def main(args: Array[String]): Unit = { val calendar: Calendar = Calendar.getInstance() println(getFrontHour()) } def getFrontHour(): String = { var date: Date = new Date() val df = new SimpleDateFormat("yyyy-MM-dd-HH") val calendar: Calendar = Calendar.getInstance() calendar.setTime(df.parse(df.format(date))) calendar.add(Calendar.HOUR_OF_DAY, -1) val currentTimes = df.format(calendar.getTime) currentTimes } }
這樣子寫不需要考慮一個問題 如下:
剛開始我的寫法是先獲取當前年 再獲取當前月 再獲取當前天 再是小時 上面這個方法是直接獲取全部年-月 -日-時
這樣子比如說按照當前日期讀取前一個小時的目錄,到了晚上0點讀取的是昨天23點的資料,就得自己去判斷是不是到0點了,如果是就得改變天數(天數-1)才對,不然會一直讀取不到23點的資料
測試程式碼:
//1 HH是24小時制 val df = new SimpleDateFormat("yyyy-MM-dd HH") val calendar: Calendar = Calendar.getInstance() calendar.setTime(df.parse("2018-03-01 0")) calendar.add(Calendar.HOUR_OF_DAY,-1) println(df.format(calendar.getTime)) //2 hh是12小時制 val df = new SimpleDateFormat("yyyy-MM-dd hh") val calendar: Calendar = Calendar.getInstance() calendar.setTime(df.parse("2018-03-01 0")) calendar.add(Calendar.HOUR_OF_DAY,-1) println(calendar.get(Calendar.YEAR)+"/"+calendar.get(Calendar.MONTH)+"/"+calendar.get(Calendar.DAY_OF_MONTH)+" "+calendar.get(Calendar.HOUR_OF_DAY))