我有以下代码:
Date time = new SimpleDateFormat("HH:mm").parse("8:00");
当我打电话time.toString()
时,会产生以下内容:
Thu Jan 01 08:00:00 CET 1970
有什么办法可以从中提取8:00
出来吗?我进行了广泛搜索,但没有找到使用标准 SimpleDateFormat 的任何方法。
当我调用 time.toString() 时,会产生以下内容
是的,它会是 - 因为你打电话给Date.toString
. 值Date
没有格式的概念。
有什么方法可以从中提取 8:00 吗?
每当您想转换为字符串时,都应该使用DateFormat
. 因此,请使用您解析的相同格式。
或者,使用Joda-Time,它有一个LocalTime
专门用于“一天中的时间”的类型,并且有一个方便的parse
方法。每次要转换为字符串时,您仍应使用格式化程序,但至少在此之前该值将更易于使用且更具描述性。
LocalTime localTime = LocalTime.parse("8:00");
要格式化它,您可以使用类似的东西,ISODateTimeFormat.hourMinute()
或者如果您可能有更高的精度,也许ISODateTimeFormat.hourMinuteSecond()
- 请参阅文档以获取所有可用选项。
回收你的原始SimpleDateFormat
对象
SimpleDateFormat format = new SimpleDateFormat("HH:mm")
Date time = format.parse("8:00");
String outString = format.format(time);
如果您想知道,这里有一些关于 DateTime Masks 的更多信息
使用相同的 SimpleDateFormat 实例将日期格式化为字符串。
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date time = sdf.parse("8:00");
System.out.println(sdf.format(time));
这将打印:
08:00
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));