【发布时间】:2016-03-19 05:35:19
【问题描述】:
我正在尝试计算用户在用户休息前点击的休息时间,并在他完成休息后点击另一个按钮。我偶然发现了几个问题,并读到最好的方法是使用 nanoTime() 方法。
System.nanoTime();
但问题是当我计算持续时间时它返回奇怪的值。
这是我的代码,
btnStartBreak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
breakStartTime = System.nanoTime();
breakTv.setText("Do you want to finish the break?");
btnStartBreak.setVisibility(View.GONE);
btnFinishBreak.setVisibility(View.VISIBLE);
}
});
btnFinishBreak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
breakFinishTime = System.nanoTime();
long breakTime = breakFinishTime - breakStartTime;
Toast.makeText(getApplicationContext(), getDate(TimeUnit.NANOSECONDS.toMillis(breakTime), "mm:ss:SSS"), Toast.LENGTH_LONG).show();
}
});
public static String getDate(long milliSeconds, String dateFormat){
// Create a DateFormatter object for displaying date in specified format.
SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
// Create a calendar object that will convert the date and time value in milliseconds to date.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(milliSeconds);
return formatter.format(calendar.getTime());
}
我已使用此link 将毫秒转换为小时和分钟。
【问题讨论】:
-
所以你打电话给
getDate,它需要毫秒的时间,但你提供的时间是纳秒?你差了 1,000,000 倍。 -
哦,原来如此。
-
好吧,我使用了 TimeUnit.NANOSECONDS.toMillis(breakTime) 但现在它仅显示 31:45:284 值持续两分钟。
标签: java android date buttonclick milliseconds