- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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,但我特别想知道 为什么会发生这种情况。
最佳答案
只需尝试将“SS”更改为“SSS”即可。
毫秒总是 3 位数。
关于android - 两部手机评估 SimpleDateFormat(...).parse(String) 的方式不同。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47896248/
我有一个应用程序在我的 Samsung Galaxy S7 7.0 版 API 24 中运行正常。但是当我在华为 CAM-L03 6.0 版 API 23 中尝试它时它不起作用。 基本上我有这样一个类
我是一名优秀的程序员,十分优秀!