我知道我可以编写自己的方法来单独提取我感兴趣的字段,但我会将其作为静态实用程序方法编写,这很丑陋。此外,我知道Date和Calendar对象具有毫秒精度,但我看不到在任何情况下都可以访问毫秒分量的方法。
编辑:我没有表明清楚:使用Date :: getTime()或Calendar :: getTimeInMillis之一对我来说并不是非常有用,因为它们返回自纪元以来的毫秒数(由该日期或日历表示),这不会真正将“时间”与其他信息分开。
Jherico的答案是我认为最接近的东西,但肯定还是需要将其卷入我自己编写的方法中。它不完全是我想要的,因为它仍然包括返回的毫秒值中的小时、分钟和秒 - 尽管我可能可以使其适合我的目的。
我仍然认为每个组成部分是“单独”的,尽管当然它们不是。你可以将一个时间写成自一个任意参考日期以来的毫秒数,或者你可以将完全相同的时间写成“年/月/日 小时:分钟:秒.毫秒”的形式。
这不是为了显示。我知道如何使用DateFormat制作漂亮的日期字符串。
编辑2:我的原始问题来源于一小组实用程序函数,我发现自己正在编写这些函数,例如:
- 检查两个Date是否表示同一天的日期时间; - 检查日期是否在由另外两个日期指定的范围内,但有时根据时间组件检查是否包含和不包含。
Joda Time有这种功能吗?
编辑3:关于@Jon提出的我的第二个要求,澄清一下:第二个要求是使用我的日期表示整个天数时产生的 - 其中时间组件根本不重要 - 有时候又要表示日期时间(在我看来,这是包含年/月/日
和小时:分钟:秒:...
最准确的词)。
当日期表示整个天数时,其时间部分为零(例如,日期的“时间组件”为午夜),但语义要求对结束日期进行包括范围检查。因为我把这个检查留给了Date::before和Date::after处理,所以必须向结束日期添加1天 - 所以当日期的时间部分为零时需要特殊处理。
希望这样没有让事情变得更加复杂。