/**

* 将给定的时间字符串转换成日期, 并指定时区

*

* 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

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: