我想记录System.currentTimeMillis()用户在我的程序中开始使用时的时间.当他完成后,我会减去当前System.currentTimeMillis()从start变量,我想向他们展示使用人类可读的格式经过诸如"XX小时XX分钟,XX秒",甚至是"XX分钟,XX秒",因为它的时间一个小时不太可能带人
最好的方法是什么?
我正在添加这个问题,因为我是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
我一直在尝试将秒值(在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.但那没用.它每次强制关闭应用程序.我完全超出了我的深度,非常感谢任何帮助.快乐的编码!
有没有人知道一个Java库可以在几毫秒内以与C#相同的方式打印数字?
例如,123456 ms作为long将被打印为4d1h3m5s.
我正在将项目从Joda-Time过渡到java8的本地时间库,我遇到了麻烦.我一直无法找到持续时间的格式化程序.我想有一个自定义字符串格式,例如,HHH + MM,其中75小时和15分钟的持续时间格式为"75 + 15".通过转换为句点并使用PeriodFormatter,使用Joda-Time很容易,但我无法在Java8中找到这种类型的类.我错过了什么吗?
我想以这种格式转换第二个/毫秒"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 Date向上或向下舍入到最近的分钟(或秒,小时,天).
例如,"Wed Wed 25 10:36:34 GMT 2012"的日期四舍五入到最接近的分钟将是"Wed Jan 25 10:37:00 GMT 2012"
我想Period使用像这样的模式来格式化YY years, MM months, DD days.Java 8中的实用程序旨在设置时间格式,但不包括句点或持续时间.PeriodFormatter在Joda时间有一个.Java有类似的实用程序吗?
我试图获得一个双倍的值与秒转换为自定义时间格式.我已经尝试过SimpleDate格式,但这不起作用......
我有这种格式的双倍值:( 407.33386569554585代表407秒和333毫秒......).
我需要这种格式: HH/MM/SS.MS
我该怎么做?
提前致谢!
我使用System.currentTimeMillis()来节省用户启动活动的时间.
public class TimeStamp {
protected long _startTimeMillis = System.currentTimeMillis();
public String getStartTime() {
return new Time(_startTimeMillis).toString();
}
Run Code Online (Sandbox Code Playgroud)
在活动开始时实例化类,getStartTime()返回正确的时间.我也试着获得活动开始后经过的时间.
public String getElapsedTime() {
return new Time(System.currentTimeMillis() - _startTimeMillis).toString();
}
Run Code Online (Sandbox Code Playgroud)
这使用模拟的Android设备(android 4.0.3)完美地工作.但是当我在真正的Android设备(android 4.0.3)上部署应用程序时,getElapsedTime()会再开始一小时,然后正常计数.因此,在我的真实设备上,getElapsedTime()将在活动开始后返回"01:00:01",但它应返回"00:00:01".
你知道为什么会这样吗?
java ×9
android ×4
time ×4
date ×2
datetime ×2
java-8 ×2
bigdecimal ×1
duration ×1
java-time ×1
jodatime ×1
period ×1
string ×1
threetenabp ×1
threetenbp ×1
time-format ×1