Java:将字符串转换为时间戳

新手上路,请多包涵

我在尝试将 String 转换为 --- 时 TimeStamp 。我有一个日期格式为 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;

final DateFormat formatter = new SimpleDateFormat(OLD_FORMAT);
final Date d = formatter.parse(oldDateString);
((SimpleDateFormat) formatter).applyPattern(NEW_FORMAT);
newDateString = formatter.format(d);
System.out.println(newDateString);

final Timestamp ts = Timestamp.valueOf(newDateString);
System.out.println(ts);

我得到以下结果。

2009-10-20 00:00:00.000

2009-10-20 00:00:00.0

但是当我尝试简单地做

final String text = "2011-10-02 18:48:05.123";
ts = Timestamp.valueOf(text);
System.out.println(ts);

我得到了正确的结果:

2011-10-02 18:48:05.123

你知道我可能做错了什么吗?

谢谢您的帮助。

原文由 Dimitra Micha 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
1 个回答

请按照以下步骤获得正确的结果:

 try {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
    Date parsedDate = dateFormat.parse(yourString);
    Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
} catch(Exception e) { //this generic but you can control another types of exception
    // look the origin of excption
}

请注意 .parse(String) 可能会抛出 ParseException

原文由 ZaoTaoBao 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题