Scala 日期相关函数

1、根据指定偏移值,获取从昨日开始往前推的第n天的日期

/**
   * 根据指定偏移值,获取从昨日开始往前推的第n天的日期,如:<br>
   * 今天是2020年9月4日,如果传入参数0表示得到昨天的日期,即2020年9月3日,传入参数1得到前天的日期9月2日
   *
   * @param day    Int
   * @param format String
   * @return
   */
  def getDateByOffset(day: Int, format: String = "yyyyMMdd"): Int = {
    val dateFormat: SimpleDateFormat = new SimpleDateFormat(format)
    val cal: Calendar = Calendar.getInstance()
    cal.add(Calendar.DATE, -(day + 1))
    val date = dateFormat.format(cal.getTime).toInt
    date
  }

2、根据指定偏移值,获取从指定日期开始往前推的第n天的日期

 /**
   * 根据指定偏移值,获取从指定日期开始往前推的第n天的日期,如:<br>
   * 指定日期是20200903,如果传入参数0表示得到20200902,传入参数1得到前天的日期20200901
   *
   * @param input  Int 指定的日期 20200903
   * @param day    Int
   * @param format String
   * @return
   */
  def getDateDaysAgo(input: Int, day: Int, format: String = "yyyyMMdd"): Int = {
    val dateFormat: SimpleDateFormat = new SimpleDateFormat(format)
    val inputDate = dateFormat.parse(input.toString)
    val cal: Calendar = Calendar.getInstance()
    cal.setTime(inputDate)
    cal.add(Calendar.DATE, -(day + 1))
    val date = dateFormat.format(cal.getTime).toInt
    date
  }

3、时间戳(s)转日期

/**
   * 时间戳(s)转日期
   *
   * @param timestamp eg:1599182997
   * @return 20200904
   */
  def getDateFromTimeStamp(timestamp: Long): String = {
    val sdf = new SimpleDateFormat("yyyyMMdd")
    sdf.format(new DefaultDate(timestamp * 1000))
  }

4、时间字符串转毫秒时间戳

  /**
   * 时间字符串转毫秒时间戳
   *
   * @param tm eg:“2020-09-04 00:00:00”
   * @return 1599148800000
   */
  def tranTimeToLong(tm: String): Long = {
    val fm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    val dt: DefaultDate = fm.parse(tm)
    val tim: Long = dt.getTime
    tim
  }

5、输入某一天的日期,得到该天的起始时间戳和结束时间戳

  /**
   * 输入某一天的日期,得到该天的起始时间戳和结束时间戳
   *
   * @param date eg: 20200720
   * @return (1595174400,1595260799)
   */
  def getTimeStampsFromDate(date: Int): (String, String) = {
    val fm = new SimpleDateFormat("yyyyMMdd HH:mm:ss")
    val start = date.toString + " 00:00:00"
    val end = date.toString + " 23:59:59"
    val dtStart = (fm.parse(start).getTime / 1000).toString
    val dtEnd = (fm.parse(end).getTime / 1000).toString
    (dtStart, dtEnd)
  }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值