是否有一种简单或优雅的方法来仅捕获Java日期(或日历,这对我来说真的不重要)的一天中的时间(小时/分钟/秒/秒/毫秒)?我正在寻找一种单独考虑日期(年/月/日)和时间部分的好方法,但是据我所知,我坚持分别访问每个字段。
我知道我可以编写自己的方法来单独获取我感兴趣的字段,但是我会将其作为静态实用程序方法来进行处理,这很丑陋。另外,我知道Date和Calendar对象具有毫秒精度,但是在两种情况下我都无法访问毫秒组件。
编辑:我不清楚这一点:使用Date :: getTime()或Calendar :: getTimeInMillis之一对我来说并不是非常有用,因为它们返回自历元以来的毫秒数(由该Date或Calendar表示) ,实际上并不会将一天中的时间与其余信息分开。
我认为,@ Jherico的答案是最接近的答案,但绝对是我仍然必须将其转化为我自己编写的方法的东西。这并不是我要的目的,因为它仍然包含返回的毫秒值中的小时,分钟和秒,尽管我可以使它满足我的目的。
我仍然认为每个组件都是独立的,尽管它们并不是分开的。您可以将时间写为自任意参考日期以来的毫秒数,也可以将时间写为与完全相同的时间year/month/day hours:minutes:seconds.milliseconds
。
这不是出于显示目的。我知道如何使用DateFormat
来制作漂亮的日期字符串。
编辑2:我最初的问题源于我发现自己编写的一小套实用程序函数-例如:
Date
s 是否表示同一天的日期时间;Joda Time是否具有这种功能?
编辑3: @Jon关于我的第二个要求的问题,只是为了澄清:第二个要求是使用我的日期有时表示整天的结果-时间部分根本没有关系-有时表示日期时间( IMO,是包含year/month/day
和 的最准确的词hours:minutes:seconds:...
。
当日期表示一整天时,其时间部分为零(例如,日期的“时间部分”为午夜),但语义表明范围检查应在结束日期进行。因为我只是将此检查保留在Date :: before和Date :: after之前,所以我必须在结束日期前加上1天-因此,当Date的一天中的时间部分为零时,将使用特殊格式。
希望这不会使事情变得不清楚。
好的,我知道这是可以预见的答案,但是...使用Joda Time。它具有“日期”,“即时”,“一天中的时间”等不同的表示形式。它比内置类IMO具有更丰富的API和更精简的API。
如果这是您仅对日期/时间操作感兴趣的部分,则可能会过大...但是,如果您将内置的日期/时间API用于重要的事情,我强烈建议您移开尽快离开它到乔达。
顺便说Calendar
一句,您应该考虑您感兴趣的时区。A 具有关联的时区,而a Date
没有关联(它仅表示一个瞬时时间,以从Unix纪元开始的毫秒数为单位)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句