【发布时间】:2013-03-21 18:02:08
【问题描述】:
我正在尝试将 yyyy-MM-dd'T'HH:mm:ss.SSSz 格式的日期格式化为 yyyy-mm-dd HH:mm:ss,这应该很容易,但我无法获得它可以工作。
必须解析的日期格式为:2012-10-01T09:45:00.000+02:00
现在我使用这个简单的日期格式化程序来格式化它:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz", Locale.FRANCE);
但这给出了类似于 2012-10-01T09:45:00.000UTC+00:00 的输出。
我也尝试使用“yyyy-MM-dd'T'HH:mm:ss.SSSZ”作为模式和“yyyy-MM-ddHH:mm:ss”。后者以 2012-10-01T09:45:00 close 的形式返回日期,但还没有。
我认为将 T 去掉会有点混乱,并且会无缘无故地产生开销,那么格式化这些日期的正确方法是什么?
为了说明我想将 2012-10-01T09:45:00.000+02:00 转换为 2012-10-01 09:45:00
干杯!
【问题讨论】:
-
子字符串比转换到/从日期对象更快/更简单。您只需将原始字符串分成两个子字符串(固定偏移量),然后用空格连接在一起。
-
这是为什么呢?我一次可能会解析多达 100 多个日期。
-
您不认为两个带有硬编码偏移量的子字符串操作加上几个连接操作会比构造和执行两个日期格式化程序更快吗?
-
仅供参考,麻烦的旧日期时间类,如
java.util.Date、java.util.Calendar和java.text.SimpleTextFormat现在是 legacy,被 java.time 类取代。
标签: java parsing date simpledateformat