如何在Java中将字符串转换为时间对象?

10

我有一个字符串值 08:03:10 pm,我想把它转换成时间格式。在Java中我该怎么做?


11
这是一个非常普遍的问题,可能本周已经被问了10次。 :) 我猜测 Google 又坏了。 - Peter Lawrey
事实上,看起来Chamal今天已经问了两次这个问题。 - jzd
可能是Java字符串转日期转换的重复内容。甚至更接近的重复内容是将Java字符串转换为时间,而不是日期 - Basil Bourque
3个回答

25
 String str = "08:03:10 pm";
 DateFormat formatter = new SimpleDateFormat("hh:mm:ss a");
 Date date = formatter.parse(str);

必看


2
不要忘记将日期转换为java.sql.Time。 - Gursel Koca
嗯,Chamal想要时间而不是日期..虽然java.sql.Time只是对日期的薄包装,但它更好地抽象了时间。 - Gursel Koca
3
我建议将日期转换为时间格式(例如:Time time = new Time(date.getTime())),原因如下:1- OP明确要求一个“Time”对象而不是一个“Date”对象,2- 可能他正在使用一些无法更改的糟糕API(例如:Time getTime(String s)),如果返回一个“Date”对象,就会导致编译错误。 - Daniel
formatter.parse(str) 强制转换为 Date 是多余的。 - Apurva

6

如果省略掉句号,这很容易。只需调用java.sql.Time.valueof()方法,而不是Time time = new Time("20:03:10");方法。


1

时间没有承包商,所以使用 time.set(date.getTime())


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接