微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

spark sql 自定义常用工具函数

时间差计算

/**
 * 根据用户今日学习,关卡状态,最近学习时间来判断是否跳课
 * @author yangxu
 * @date 2020/9/28 5:53 下午
 * @param isstudyToday  今日是否学习
 * @param planStatus  关卡状态
 * @param studyTime   最近学习时间
 * @return  java.lang.String
 */
  def jumpClass(isstudyToday:String,planStatus:String,studyTime:String): String ={
    val maxIntervalTime = 25*60*1000 //最大间隔为25分钟
    val pattern = "yyyy-MM-dd HH:mm:ss"
    val st = new SimpleDateFormat(pattern).parse(studyTime).getTime
    val currentTime = Calendar.getInstance().getTimeInMillis
    val intervalTime = currentTime - st
    //判断是否大于25分钟
    val flag = if( intervalTime > maxIntervalTime ) true else false
    val tuple = Tuple3(isstudyToday, planStatus,flag)
    tuple match {
      case ("是","出勤",true) =>
          "是"
      case ("是","出勤",false) =>
        "否"
      case ("是","完课",_) =>
        "否"
      case ("否",_,_) =>
        "否"
    }
  }
 /**
  * 获取距离传入时间字符串指定间隔的新时间字符串
  * 如:
  * date_interval(current_timestamp(),1,"hour")
  * 2020-09-24T11:26:53.583+08:00 =》2020-09-24 12:26:52
  *
  * @author yangxu
  * @date 2020/9/24 11:30 上午
  * @param timeStamp 时间字符串
  * @param num       间隔
  * @param interval  间隔单位,hour,day,min,second
  * @return java.lang.String
  */
 def date_add_interval(timeStamp: String, num: Int, interval: String): String = {
  val pattern = "yyyy-MM-dd HH:mm:ss"
  val date = new SimpleDateFormat(pattern).parse(timeStamp)
  val orgTime = date.getTime
  var result: Long = 0l
  try {
   interval match {
    case "hour" =>
     result = orgTime + num * 60 * 60 * 1000
    case "min" =>
     result = orgTime + num * 60 * 1000
    case "second" =>
     result = orgTime + num * 1000
    case "day" =>
     result = orgTime + num * 24 * 60 * 60 * 1000
    case _ =>
     throw new Exception("请输入正确的时间间隔,day,min,second,hour")
   }
  } catch {
   case exception: Exception =>
    exception.printstacktrace()
  }
  new SimpleDateFormat(pattern).format(result)

 }

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐