我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
在Java中,给定时间戳,如何将时间部分单独重置为00:00:00,以便时间戳表示该特定日期的午夜?
在T-SQL中,此查询将实现相同的目标,但我不知道如何在Java中执行此操作.
SELECT CAST( FLOOR( CAST(GETDATE() AS FLOAT ) ) AS DATETIME) AS 'DateTimeAtMidnight';
是否有一种简单或优雅的方法只能抓取Java Date(或日历)的一天中的时间(小时/分钟/秒/毫秒),这对我来说无关紧要?我正在寻找一种分别考虑日期(年/月/日)和时间部分的好方法,但据我所知,我不得不分别访问每个字段.
我知道我可以编写自己的方法来单独抓取我感兴趣的字段,但我会把它作为一个静态的实用方法,这很难看.另外,我知道Date和Calendar对象具有毫秒级的精度,但在任何一种情况下我都没有办法访问毫秒组件.
编辑:我不清楚这一点:使用Date :: getTime()或Calendar :: getTimeInMillis之一对我来说并不是非常有用,因为那些返回自纪元以来的毫秒数(由该日期或日历表示) ,实际上并没有将时间与其他信息分开.
@ Jherico的回答是最接近的事情,我想,但绝对是我仍需要采用我自己编写的方法.这不是我想要的,因为它仍然包括返回毫秒值的小时,分钟和秒 - 尽管我可能会使它适合我的目的.
我仍然认为每个组件是分开的,当然,它们不是.您可以将时间写为自任意参考日期以来的毫秒数,或者您可以写出完全相同的时间year/month/day hours:minutes:seconds.milliseconds.
这不是用于显示目的.我知道如何使用a DateFormat制作漂亮的日期字符串.
编辑2:我的原始问题来自我发现自己编写的一小组实用函数 - 例如:
Dates 是否代表同一天的日期时间;Joda Time有这种功能吗?
编辑3: @乔恩的问题,关于我的第二个要求,我只想澄清:第二个要求是用我的日期有时代表了整个天的结果-在时间组件并不在所有问题-有时代表一个日期-时间(这是IMO,包含year/month/day 和的 东西最准确的单词hours:minutes:seconds:....
当Date表示整天时,其时间部分为零(例如Date的"time component"为午夜),但语义规定范围检查在结束日期包含.因为我只是将这个检查留给Date :: before和Date :: after,所以我必须在结束日期添加1天 - 因此当Date的时间组件为零时的特殊外壳.
希望没有让事情变得不那么清楚.
java ×2
android ×1
calendar ×1
date ×1
datetime ×1
sql ×1
threetenabp ×1
threetenbp ×1
time ×1
timestamp ×1