【发布时间】:2015-01-08 08:36:46
【问题描述】:
我正在尝试使用 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,不会改变结果。
我不确定我做错了什么。
【问题讨论】:
-
可能重复:stackoverflow.com/questions/11207110/…(尽管从那时起 Java8 的改进可能会提供更好的答案。)
-
@GáborBakos - 您提到的问题似乎只处理日期对象。它没有回答我的问题。
-
您可以手动将UTC时区添加到要解析的String和格式中。这样,
Date将位于 UTC 时区。我不确定你为什么需要Calendar。 -
感谢您的建议。让我尝试。但是,我会得到 10000 个字符串。我不想迭代两次来收集时间戳。
-
在java中尝试了以下代码。它似乎工作正常。DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); System.out.println(sdf.parse("2014-12-12 13:12:45"));结果:2014 年 12 月 12 日星期五 18:42:45 IST