我java.util.Date在Scala中使用Java的类,想要比较一个Date对象和当前时间.我知道我可以使用getTime()来计算delta:
(new java.util.Date()).getTime() - oldDate.getTime()
Run Code Online (Sandbox Code Playgroud)
但是,这只留下了一个long代表毫秒.是否有更简单,更好的方式来获得时间增量?
我正在添加这个问题,因为我是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
我糊涂了.在绊倒这个线程之后,我试图弄清楚如何格式化具有该格式的倒数计时器hh:mm:ss.
这是我的尝试 -
//hh:mm:ss
String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
Run Code Online (Sandbox Code Playgroud)
所以,当我尝试一个类似的值3600000ms,我得到01:59:00,这是错误的,因为它应该是01:00:00.显然我的逻辑有问题,但此刻,我看不出它是什么!
有人可以帮忙吗?
编辑 -
固定它.这是格式化毫秒hh:mm:ss格式的正确方法-
//hh:mm:ss
String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))));
Run Code Online (Sandbox Code Playgroud)
问题是这个TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)).应该是这样的TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)).
我想用H:MM:SS这样的模式格式化持续时间(以秒为单位).java中的当前实用程序旨在格式化时间而不是持续时间.
我想计算2小时/分钟/秒之间的差异.
我的代码在这里有点问题:
String dateStart = "11/03/14 09:29:58";
String dateStop = "11/03/14 09:33:43";
// Custom date format
SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
} catch (ParseException e) {
e.printStackTrace();
}
// Get msec from each, and subtract.
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000;
long diffMinutes = diff / (60 * 1000);
long diffHours = diff …Run Code Online (Sandbox Code Playgroud) 我需要将任意数量的毫秒转换为Days,Hours,Minutes Second.
例如:10天,5小时,13分钟,1秒.
我一直在尝试将秒值(在BigDecimal变量中)转换为editText中的字符串,如"1小时22分33秒"或类似的东西.
我试过这个:
String sequenceCaptureTime = "";
BigDecimal roundThreeCalc = new BigDecimal("0");
BigDecimal hours = new BigDecimal("0");
BigDecimal myremainder = new BigDecimal("0");
BigDecimal minutes = new BigDecimal("0");
BigDecimal seconds = new BigDecimal("0");
BigDecimal var3600 = new BigDecimal("3600");
BigDecimal var60 = new BigDecimal("60");
Run Code Online (Sandbox Code Playgroud)
(我有一个roundThreeCalc,这是秒的值,所以我尝试在这里转换它.)
hours = (roundThreeCalc.divide(var3600));
myremainder = (roundThreeCalc.remainder(var3600));
minutes = (myremainder.divide(var60));
seconds = (myremainder.remainder(var60));
sequenceCaptureTime = hours.toString() + minutes.toString() + seconds.toString();
Run Code Online (Sandbox Code Playgroud)
然后我将editText设置为sequnceCaptureTime String.但那没用.它每次强制关闭应用程序.我完全超出了我的深度,非常感谢任何帮助.快乐的编码!
我查看过以前的问题,但没有人得到我想要的答案.如何将StopWatch方法的毫秒转换为分钟和秒?我有:
watch.start();
Run Code Online (Sandbox Code Playgroud)
启动秒表和
watch.stop();
Run Code Online (Sandbox Code Playgroud)
停下手表 我以后有
watch.getTime();
Run Code Online (Sandbox Code Playgroud)
返回毫秒.我希望它能在秒和分钟内返回.我该怎么做呢?我正在寻找一种方法来做到这一点,而不是乘以/除以1000,而是一种方法,使整个计算更具可读性,更不容易出错.
我想使用currentTimeMillis两次,所以我可以计算持续时间,但我也想以用户可读的格式显示时间和日期.我遇到麻烦currentTimeMillis虽然对计算有好处,但我看不到内置函数转换为好时间或时间/日期.
我用
android.text.format.DateFormat df = new android.text.format.DateFormat();
df.format("yyyy-MM-dd kk:mm:ss", new java.util.Date());
Run Code Online (Sandbox Code Playgroud)
为了产生美好的时间和日期,我最终想做的是将我的结果currentTimeMillis价值 显示出来android.text.format.DateFormat df = new android.text.format.DateFormat();
例如
android.text.format.DateFormat df = currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)
当我尝试我得到
类型不匹配:无法从long转换为DateFormat
我试图使用一些铸造,但无法看到如何实现这一目标.
我想以这种格式转换第二个/毫秒"HH:mm:ss"(对于例子,从5秒到00:00:05).我试图以这种方式获得这种格式:
int millis = 5000;
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
String time = df.format(millis);
Run Code Online (Sandbox Code Playgroud)
这样,我得到"01:00:05"而不是"00:00:05".我哪里错了?
java ×8
time ×6
android ×4
date ×3
datetime ×2
bigdecimal ×1
duration ×1
stopwatch ×1
string ×1
threetenabp ×1
threetenbp ×1
time-format ×1
timedelta ×1
watch ×1