[scala]自定义时间工具类

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

import org.joda.time.DateTime

object DateUtil {
  final val ONE_HOUR_MILLISECONDS = 60 * 60 * 1000

  final val SECOND_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"

  final val DAY_DATE_FORMAT_ONE = "yyyy-MM-dd"

  final val DAY_DATE_FORMAT_TWO = "yyyyMMdd"

  //时间字符串=>时间戳
  def convertDateStr2TimeStamp(dateStr: String, pattern: String): Long = {
    new SimpleDateFormat(pattern).parse(dateStr).getTime
  }


  //时间字符串+天数=>时间戳
 /* def dateStrAddDays2TimeStamp(dateStr: String, pattern: String, days: Int): Long = {
    convertDateStr2Date(dateStr, pattern).plusDays(days).date.getTime
  }
*/

  //时间字符串=>日期
  def convertDateStr2Date(dateStr: String, pattern: String): DateTime = {
    new DateTime(new SimpleDateFormat(pattern).parse(dateStr))
  }


  //时间戳=>日期
  def convertTimeStamp2Date(timestamp: Long): DateTime = {
    new DateTime(timestamp)
  }

  //时间戳=>字符串
  def convertTimeStamp2DateStr(timestamp: Long, pattern: String): String = {
    new DateTime(timestamp).toString(pattern)
  }

  //时间戳=>小时数
  def convertTimeStamp2Hour(timestamp: Long): Long = {
    new DateTime(timestamp).hourOfDay().getAsString().toLong
  }


  //时间戳=>分钟数
  def convertTimeStamp2Minute(timestamp: Long): Long = {
    new DateTime(timestamp).minuteOfHour().getAsString().toLong
  }

  //时间戳=>秒数
  def convertTimeStamp2Sec(timestamp: Long): Long = {
    new DateTime(timestamp).secondOfMinute().getAsString.toLong
  }



  def addZero(hourOrMin: String): String = {
    if (hourOrMin.toInt <= 9)
      "0" + hourOrMin
    else
      hourOrMin

  }

  def delZero(hourOrMin: String): String = {
    var res = hourOrMin
    if (!hourOrMin.equals("0") && hourOrMin.startsWith("0"))
      res = res.replaceAll("^0","")
    res
  }

  def dateStrPatternOne2Two(time: String): String = {
    DateUtil.convertTimeStamp2DateStr(DateUtil.convertDateStr2TimeStamp(time, DateUtil
      .DAY_DATE_FORMAT_ONE), DateUtil.DAY_DATE_FORMAT_TWO)
  }

  //获取星期几
  def dayOfWeek(dateStr: String): Int = {
    val sdf = new SimpleDateFormat("yyyy-MM-dd")
    val date = sdf.parse(dateStr)

    //    val sdf2 = new SimpleDateFormat("EEEE")
    //    sdf2.format(date)

    val cal = Calendar.getInstance();
    cal.setTime(date);
    var w = cal.get(Calendar.DAY_OF_WEEK) - 1;

    //星期天 默认为0
    if (w <= 0)
      w = 7
    w
  }

  //判断是否是周末
  def isRestday(date: String): Boolean = {
    val dayNumOfWeek = dayOfWeek(date)
    dayNumOfWeek == 6 || dayNumOfWeek == 7
  }

  def getNowDate():String={
    var now:Date = new Date()
    var  dateFormat:SimpleDateFormat = new SimpleDateFormat("yyyyMMdd")
    var hehe = dateFormat.format( now )
    hehe
  }


  def main(args: Array[String]): Unit = {
  //  println(dayOfWeek("2020-09-10"))
    println(new SimpleDateFormat("yyyyMMdd").format(new Date()))
  }
}

附一个博客地址,作者写的挺好的:https://blog.csdn.net/springlustre/article/details/47273353

Scala 中使用 Jackson 库进行 JSON 数据的反序列化操作时,可以使用 `mapper.readValue` 方法。如果需要反序列化的 JSON 数据中包含自定义的 Java 类,可以通过在 Scala 中使用 Java 类的方式来实现。 具体实现方法如下: 1. 定义 Java 类 首先,在 Scala 代码中使用 `mapper.readValue` 方法前,需要先定义一个 Java 类来表示需要反序列化的 JSON 数据中的对象。例如,下面的代码定义了一个 `Person` 类: ```java public class Person { private String name; private int age; // getters and setters } ``` 2. 使用 Scala 调用 Java 类 在 Scala 中,可以通过 `JavaConverters` 工具类来将 Java 类转换成 Scala 类。例如,下面的代码将 `Person` 类转换成了 `PersonScala` 类: ```scala import scala.collection.JavaConverters._ case class PersonScala(name: String, age: Int) val json = """{"name": "Alice", "age": 30}""" val mapper = new ObjectMapper() val person = mapper.readValue(json, classOf[Person]).asScala val personScala = PersonScala(person.name, person.age) ``` 注意,在调用 `mapper.readValue` 方法时,需要将 `classOf[Person]` 作为第二个参数传入,以告诉 Jackson 库需要将 JSON 数据转换成 `Person` 类。 3. 使用 Scala 类 现在,`PersonScala` 类就可以在 Scala 代码中使用了。例如,下面的代码创建了一个 `PersonScala` 对象并打印出其属性: ```scala val personScala = PersonScala("Bob", 25) println(s"Name: ${personScala.name}, Age: ${personScala.age}") ``` 输出结果为: ``` Name: Bob, Age: 25 ``` 这样,就可以在 Scala 中使用 Java 自定义类了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值