获取当前时间前一小时(比如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))

猜你喜欢

转载自blog.csdn.net/weixin_41804049/article/details/85267676