1

我有以下代码:

Date time = new SimpleDateFormat("HH:mm").parse("8:00");

当我打电话time.toString()时,会产生以下内容:

Thu Jan 01 08:00:00 CET 1970

有什么办法可以从中提取8:00出来吗?我进行了广泛搜索,但没有找到使用标准 SimpleDateFormat 的任何方法。

4

4 回答 4

3

当我调用 time.toString() 时,会产生以下内容

是的,它会是 - 因为你打电话给Date.toString. 值Date没有格式的概念。

有什么方法可以从中提取 8:00 吗?

每当您想转换为字符串时,都应该使用DateFormat. 因此,请使用您解析的相同格式。

或者,使用Joda-Time,它有一个LocalTime专门用于“一天中的时间”的类型,并且有一个方便的parse方法。每次要转换为字符串时,您仍应使用格式化程序,但至少在此之前该值将更易于使用且更具描述性。

LocalTime localTime = LocalTime.parse("8:00");

要格式化它,您可以使用类似的东西,ISODateTimeFormat.hourMinute()或者如果您可能有更高的精度,也许ISODateTimeFormat.hourMinuteSecond()- 请参阅文档以获取所有可用选项。

于 2012-11-28T21:21:14.980 回答
2

回收你的原始SimpleDateFormat对象

SimpleDateFormat format = new SimpleDateFormat("HH:mm")
Date time = format.parse("8:00");
String outString = format.format(time);

如果您想知道,这里有一些关于 DateTime Masks 的更多信息

于 2012-11-28T21:23:39.403 回答
1

使用相同的 SimpleDateFormat 实例将日期格式化为字符串。

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date time = sdf.parse("8:00");
System.out.println(sdf.format(time));

这将打印:

08:00
于 2012-11-28T21:24:13.133 回答
0

java.util.Date类表示特定的时间瞬间,精度为毫秒。

API 说java.util.Date.toString()

将此 Date 对象转换为以下形式的字符串:
dow mon dd hh:mm:ss zzz yyyy

为了格式化日期的使用SimpleDateFormat

    System.out.println(new SimpleDateFormat("HH:mm").format(time));
于 2012-11-28T21:22:33.227 回答