1. 程式人生 > >獲取當前時間前一小時(比如hdfs目錄就是按照年月日小時來分級的)

獲取當前時間前一小時(比如hdfs目錄就是按照年月日小時來分級的)

直接調這個方法就可以

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))