我面临这个问题,我将时区设置为UTC
,但它仍然显示IST。
>>> import java.util.Calendar
>>> import java.util.TimeZone
>>> val cal = Calendar.getInstance()
>>> cal.setTimeZone(TimeZone.getTimeZone("UTC"))
>>> cal.getTimeZone().getDisplayName()
res95: String = Coordinated Universal Time # here i got UTC
>>> cal.getTime()
res97: java.util.Date = Thu Oct 08 13:13:17 IST 2015
^^^
why here IST insted of UTC???
'getTime'函数返回一个java Date对象,该对象不知道您对Calendar对象进行的setTimeZone
调用。Date对象没有时区的概念,它只是对纪元后毫秒数的包装。您看到的输出只是Scala REPL用来描述对象的默认toString
表示。您可以使用如下代码显式地将Date对象转换为特定时区中的String:
import java.text.SimpleDateFormat
import java.util.{TimeZone, Date}
val formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
val date= new Date(1444291567242l); //java.util.Date = Thu Oct 08 09:06:07 BST 2015
val dateString = formatter.format(date); //String = 2015-10-08 08:06:07 UTC