我正在尝试使用SimpleDateFormat来解析scala中的日期和时间字符串。我希望创建的Date对象是UTC格式,但它将其转换为我的本地时区。设置时区或日历无效。
scala> new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
scala> res41.parse("2014-12-12 13:12:45")
//java.util.Date = Fri Dec 12 13:12:45 IST 2014
设置时区如res41.setTimeZone(java.util.TimeZone.getTimeZone("UTC"))
(res41是Scala REPL中SimpleDateFormat的实例)后给出了相同的结果。
如果我设置Calendar
,例如res41.setCalendar(cal)
,其中cal
是java.util.Calendar
的实例,时区也是UTC,则不会更改结果。
我不确定我做错了什么。
答案 0 :(得分:2)
您可以使用java.time package内置的Java 8。它比java.util类更容易使用。
import java.time.ZoneId
java.time.LocalDateTime.now()
java.time.LocalDateTime.now(ZoneId.of("GMT"))
java.time.LocalDateTime.now(ZoneId.of("Asia/Kolkata"))
java.time.LocalDateTime.now(ZoneId.of("Australia/Sydney"))
使用ZoneId
,可以获得不同时区的时间。使用正确的time zone names。
您也可以使用Joda-Time,尤其是在您不使用Java 8时。请参阅DateTimeZone
。