【时间日期转换】将字符串转换为日期并指定时区(Scala实现)

 /**
   * 将给定的时间字符串转换成日期, 并指定时区
   *
   * dateStr 给定的时间字符串 (格式应该与pattern参数一致)
   * pattern 时间字符串的格式
   * timeZoneId 时区Id, 默认取系统本地设置的时区
   *
   * @param dateStr
   * @param pattern
   * @param timeZoneId
   * @return
   */
def parseDate(dateStr: String, pattern: String = "yyyy-MM-dd HH:mm:ss", timeZoneId: String = TimeZone.getDefault.getID): Date = {

    val zoneId = ZoneId.of(StringUtils.trim(timeZoneId))
    val timeZone = TimeZone.getTimeZone(zoneId)

    val df = FastDateFormat.getInstance(pattern, timeZone)

    df.parse(dateStr)
  }

在上面的代码中,首先使用TimeZone.getTimeZone方法将指定的时区Id转换为TimeZone对象。然后使用FastDateFormat.getInstance方法获取一个FastDateFormat对象, 并且通过timeZone参数指定了时区。最后,使用FastDateFormat对象的parse方法将给定的日期字符串转换为指定时区的日期。

下面是测试方法

    val dateStr = "2023-04-03 19:42:50"

    val date1 = parseDate(dateStr, fullFormat)
    val date2 = parseDate(dateStr, fullFormat, "Asia/Shanghai")
    val date3 = parseDate(dateStr, fullFormat, "US/Pacific")
    val date4 = parseDate(dateStr, fullFormat, "Australia/Brisbane")
    val date5 = parseDate(dateStr, fullFormat, "Europe/London")

    println(date1)
    println(date2)
    println(date3)
    println(date4)
    println(date5)

输出结果为:

Mon Apr 03 19:42:50 CST 2023
Mon Apr 03 19:42:50 CST 2023
Tue Apr 04 10:42:50 CST 2023
Mon Apr 03 17:42:50 CST 2023
Tue Apr 04 02:42:50 CST 2023

你可能感兴趣的:(#,时间日期操作,scala,字符串转日期,时区)