时区间时间转换

字符串是不带时区的, parse的时候是默认换成jvm时区,除非你显示给出时区

date  format的时候默认换成JVM时区,然后给出字符串,除非你显示给出时区

  test("test date convert") {

    val dateTimeFormatString = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
    val sdf = new SimpleDateFormat(dateTimeFormatString)
    val utcDF = FastDateFormat.getInstance(dateTimeFormatString, TimeZone.getTimeZone("UTC"))
    val dateStr = "2018-01-01T00:00:01.000Z"

    println(sdf.parse(dateStr))
    println(utcDF.parse(dateStr))

    val dateStr2 = "2018-01-01"

    println(FastDateFormat.getInstance("yyyy-MM-dd").parse(dateStr2)) // 这里按照JVM默认CST时区 转成了CST的 2018-01-01

    println(FastDateFormat.getInstance("yyyy-MM-dd",TimeZone.getTimeZone("UTC")).parse(dateStr2)) // 这里转成了 UTC 时区的 2018-01-01, 换算成CST 就是 2018-01-01 8点

    val now = new Date()
    println(now)
    println(FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss").format(now)) // 这里把now里面的时间戳转成了默认的CST时区的时间
    println(FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss",TimeZone.getTimeZone("UTC")).format(now)) //这里转成了UTC时区的时间

  }

Mon Jan 01 00:00:01 CST 2018

Mon Jan 01 08:00:01 CST 2018

Mon Jan 01 00:00:00 CST 2018

Mon Jan 01 08:00:00 CST 2018

Fri Sep 21 00:15:59 CST 2018

2018-09-21 00:15:59

2018-09-20 16:15:59

猜你喜欢

转载自renxiangzyq.iteye.com/blog/2431075