我正在尝试使用 SimpleDateFormat 来解析 scala 中的日期和时间字符串。我希望创建的日期对象采用 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,不会改变结果。
我不知道我做错了什么。
最佳答案
java.time
您可以使用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
.
关于java - 使用 SimpleDateFormat 获取 UTC 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27835910/