scala时间工具类

import java.sql.Timestamp
import java.text.SimpleDateFormat
import java.util.{Calendar, Date}

import org.apache.spark.sql.Column
import org.apache.spark.sql.functions._
import org.joda.time.DateTime
import org.joda.time.format.{DateTimeFormat, DateTimeFormatter}
/**
  * 对时间进行处理
  * Created by 260169 on 2017/11/27.
  */
object DateUtil {
  def dateFormat(time:Column){
    time.cast("timestamp")
  }

  //求两个时间之差
  def getDiffTime(startTime:Column,endTime:Column)={
    if(startTime==null || endTime == null ) lit(-1)
    else {
      val timeFormt="yyyy-MM-dd HH:mm:ss"
      val start=date_format(startTime,timeFormt)
      val end =date_format(endTime,timeFormt)
      unix_timestamp(end,timeFormt)-unix_timestamp(start,timeFormt)
    }
  }

  //求某个时间的向前或向后x秒的时间
  def getAddTime(start_Time:Timestamp,interval:Int):Timestamp={
    var sdf:SimpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    var timeFormt="yyyy-MM-dd HH:mm:ss"
    var time:Long =DateFormat(start_Time)
    val addtime: Long =time+interval
    val addtime1: String =sdf.format(addtime*1000)
    val finaltime=Timestamp.valueOf(addtime1)
    finaltime
  }


  //返回Timestamp前Int天的年、月、日
  def getYMDHMS(SubTime: String,Day:Int):String = {
    val subY = SubTime.substring(0,4)
    val subM = SubTime.substring(5,7)
    val subD = SubTime.substring(8,10).toLong
    val subH = SubTime.substring(11,13)
    val subMI = SubTime.substring(14,16)
    val subS = SubTime.substring(17,19)

    val orgDay= (subD - Day).toString
    val dd = subY+"-" +subM+"-"+orgDay+" "+subH+":"+subMI+":"+subS
    val format1: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    //     println(  format1.format(format1.parse(dd)))

    val tt =format1.format(format1.parse(dd))
    tt
  }


def getDay(dateString:String,beforeDay:Int):String={

    val sdf:SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    val temp1=sdf.parse(dateString)

    val calendar= Calendar.getInstance()
    calendar.setTime(temp1)
    //  calendar.add(Calendar.YEAR,1)// 年加1
    //  calendar.add(Calendar.MONTH,1)// 月加1
    calendar.add(Calendar.DAY_OF_MONTH,-beforeDay)//往前beforeDay
    //  calendar.add(Calendar.HOUR_OF_DAY,2)//小时加2
    //  calendar.add(Calendar.MINUTE,2)//分钟加2
    //  calendar.add(Calendar.SECOND,2)//秒加2

    val result = sdf.format(calendar.getTime)
    result
  }


  def DateFormat(time:Timestamp):Long={

    val sdf: SimpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") //定义格式,不显示毫秒
    val dt: Date =sdf.parse(time.toString)

    dt.getTime()/1000
  }
  def DateFormatday(time:Timestamp):Long={

    val sdf: SimpleDateFormat =new SimpleDateFormat("yyyy-MM-dd") //定义格式,不显示毫秒
    val dt: Date =sdf.parse(time.toString)

    dt.getTime()/1000
  }

//获取year、month、day字段
  def getYMD(time: Timestamp, minusDay: Int = 0): (Option[Int], Option[Int], Option[Int]) = {
    val format: DateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS")
    val dateTime: DateTime = DateTime.parse(time.toString, format)
    val localTime1: Array[String] = dateTime.minusDays(minusDay).toString("yyyy-MM-d").split("-", 3)//去除2016-10-01中的-
    val year: Int = localTime1(0).toInt
    val month: Int = localTime1(1).toInt
    val day: Int = localTime1(2).toInt

    (Option(year), Option(month), Option(day))

  }
  //获取当前系统时间
  def getLocalTime: Timestamp = {
    val localTime1 = DateTime.now.toString("yyyy-MM-dd HH:mm:ss")
    val localTime = Timestamp.valueOf(localTime1)
    localTime
  }

// 获取当前时间
  def getNowTime: Timestamp = {
val now=new DateTime()
val fmt=DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
   
    fmt.print(now)
  }

}

 

原文地址:https://blog.csdn.net/u014384314/article/details/83381262

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

相关推荐


共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 TwemojiTwemoji是Twitter开源的其完整的Emoji表情图片。开发者可以去GitHub下载完整的表情库,并把这些表情加入到自己的应用或网页中。使用示例:var i = 0;twemoji.parse(  ’emoji, m\u276
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即两个对象在内存中的首地址;equals比较字符串中所包含的内容是否相同。publicstaticvoidmain(String[]args){​ Strings1="abc"; Strings2=newString("abc");​ System.out.println(s1==s2)
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Scala怎么使用”吧!语法scala...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相信很多人在Scala是一种什么语言问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相信很多人在Scala Trait怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日常操作中,相信很多人在Scala类型检查与模式匹配怎么使用问题上存在疑惑,小编查阅了各式资料,整理...
这篇文章主要介绍“scala中常用但不常见的符号有哪些”,在日常操作中,相信很多人在scala中常用但不常见的符号有哪些问题上存在疑惑,小编查阅了各式资料,整理...
本篇内容主要讲解“Scala基础知识有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Scala基础知识有哪些”...
本篇内容介绍了“scala基础知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧...
本篇内容介绍了“Scala下划线怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧...
本篇内容主要讲解“Scala提取器怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Scala提取器怎么使用”...
这篇文章主要讲解了“Scala基础语法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala基础语法有...
本篇内容主要讲解“Scala方法与函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Scala方法与函数怎...
这篇文章主要讲解了“scala条件控制与循环怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“scala条...
这篇文章主要介绍“scala函数怎么定义和调用”,在日常操作中,相信很多人在scala函数怎么定义和调用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操
这篇文章主要介绍“scala如何声明变量”,在日常操作中,相信很多人在scala如何声明变量问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
这篇文章主要讲解了“scala的Map和Tuple怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“scala的Ma...
这篇文章主要介绍“scala的隐式参数有什么作用”,在日常操作中,相信很多人在scala的隐式参数有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
本篇内容主要讲解“Scala怎么进行文件写操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Scala怎么进行文件...
这篇文章主要讲解了“Scala怎么声明数组”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala怎么声明数组...