我是Android的新手(这是我的第一个应用,请温柔:D)我的两部手机出现问题,似乎没有用同样的方式评估毫秒数。我有一个搭载Android 5.0.1(Lollipop)的三星S4和带有4.4.2(KitKat)的S3Neo。
问题出现在我的CalcUtils.timeToMillis(String time)
函数中,我的调用如下:referenceTime = CalcUtils.timeToMillis("32.50");
。即,两部手机都获得相同的参数" 32.50"在电话中。
我的S3Neo返回I/CalcUtils: time '0:32.50' is 32050 ms
(我需要以毫秒为单位进行游泳计算以及此手机上的结果与我的图表不匹配),而我的S4返回I/CalcUtils: time '0:32.500' is 32500 ms
(这就是我要做的)期望)
下面是我的CalcUtils类的完整代码:
import android.util.Log;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
public class CalcUtils {
private static final String TAG = "CalcUtils";
public static int timeToMillis(int minutes, int seconds, int milliseconds) {
int result = minutes * 60000 + seconds * 1000 + milliseconds;
Log.i(TAG, String.format("time '%d:%d.%d' is %d ms", minutes, seconds, milliseconds, result));
return result;
}
public static int timeToMillis(String time) {
List<String> formatStrings = Arrays.asList("mm:ss.SS", "ss.SS");
for (String formatString : formatStrings) {
try {
Date timeFormat = new SimpleDateFormat(formatString).parse(time);
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(timeFormat); // assigns calendar to given date
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);
int milliseconds = calendar.get(Calendar.MILLISECOND);
return timeToMillis(minutes, seconds, milliseconds);
} catch (ParseException e) {
Log.i(TAG, String.format("Could not parse: %s with format %s", time, formatString));
}
}
// no time was parsed!
return 0;
}
}
我认为问题源于不同的API如何评估毫秒。但是,我无法找到任何证据。这让我有几个问题:
修改
我挖了一点点。问题似乎发生在Date timeFormat = new SimpleDateFormat(formatString).parse(time);
。在那次通话之后(具有相同的参数!),S3Neo已经有32050而S4有32500.我需要他们两个都返回32500,但特别是我想知道< strong>为什么这种情况正在发生。
答案 0 :(得分:1)
试着改变&#34; SS&#34;到&#34; SSS&#34;。
毫秒总是3位数。