【发布时间】:2013-09-25 17:48:10
【问题描述】:
我在尝试将字符串转换为时间戳时遇到问题。我有一个日期格式为yyyy-MM-dd 的数组,我想更改为yyyy-MM-dd HH:mm:ss.SSS 的格式。所以,我使用这个代码:
final String OLD_FORMAT = "yyyy-MM-dd";
final String NEW_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
String oldDateString = createdArray[k];
String newDateString;
DateFormat formatter = new SimpleDateFormat(OLD_FORMAT);
Date d = formatter.parse(oldDateString);
((SimpleDateFormat) formatter).applyPattern(NEW_FORMAT);
newDateString = formatter.format(d);
System.out.println(newDateString);
Timestamp ts = Timestamp.valueOf(newDateString);
System.out.println(ts);
我得到以下结果。
2009-10-20 00:00:00.000
2009-10-20 00:00:00.0
但是当我尝试简单地做时
String text = "2011-10-02 18:48:05.123";
ts = Timestamp.valueOf(text);
System.out.println(ts);
我得到了正确的结果:
2011-10-02 18:48:05.123
你知道我做错了什么吗? 感谢您的帮助。
【问题讨论】:
-
没有错。在第一种情况下您期望什么?您正在从 2009-10-20 日期创建时间戳,因此未设置时间戳的时间部分。在第二种情况下,您正在从设置时间的字符串创建时间戳。
-
只需使用两个(Simple)DateFormat实例,无需摆弄
applyPattern()。 -
@GyroGearless 我不知道你是什么意思?怎么可能不 ApplyPattern?
-
@Piro 错误的问题是我有 2009-10-20 00:00:00.0 而不是 2009-10-20 00:00:00.000
-
为什么需要三个位置/零?时间戳使用它自己的格式并且该格式是正确的并且不能更改。如果您需要打印格式化的时间戳,请将其从 Timestamp 转换回 Date 并格式化。当前的答案似乎完全错过了您所需要的,因为您的问题并不明显
标签: java date datetime timestamp