字符串是不带时区的, 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
扫描二维码关注公众号,回复:
3267515 查看本文章
Fri Sep 21 00:15:59 CST 2018
2018-09-21 00:15:59
2018-09-20 16:15:59