• 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)
    
     }
  • 相关阅读:
    SharePoint母板页更改
    SharePoint的一些基本操作
    百度地图
    内存管理
    根据文字的个数,label自动适应高度
    navgationBar
    接收服务器上的图片,可以用webview或者 imageview
    iOS 自带的解析json的类。
    改变uilable uibutton等的字体颜色、大小。
    Nsstring和NSdata的编码转换
  • 原文地址:https://www.cnblogs.com/yangxusun9/p/13758157.html
Copyright © 2020-2023  润新知