我的时间戳格式为03-AUG-12 08.15.00.000000000 PM -05:00
我无法获得String
形式上的表示yyyy-MM-dd HH:mm:ss
.
这是我的代码:
public static void convert() {
String oldstring = "03-AUG-12 08.15.00.000000000 PM -05:00";
Date date = null;
try {
date = new SimpleDateFormat("dd-MMM-yy HH.mm.ss.S aa").parse(oldstring);
}
catch (ParseException e) {
e.printStackTrace();
}
String newstring = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
System.out.println(newstring);
}
基本上它是来自 Oracle 数据库的时区格式的时间戳。
您不能使用 SimpleDateFormat 来解析这样的字符串,至少不能没有一些限制:
Java 7 之前不支持像 -05:00(根据 ISO 8601)这样的时区指示符。使用 Java 7,您可以使用 XXX 模式来解析它。
要正确解析月份名称,您应该指定需要英语区域设置。
毫秒 (S) 模式可解析无限数量的数字。如果您的字符串包含“08.15.00.100000000”,SimpleDateFormat 会将其解析为 8:15:00 和 100000000 毫秒,比预期值增加了近 28 小时。如果您确定该值始终为0,则可以忽略此问题。
如果您可以接受最后一期并使用 Java 7,那么您应该使用如下所示的内容:
new SimpleDateFormat("dd-MMM-yy hh.mm.ss.S aa XXX", Locale.ENGLISH)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)