gpt4 book ai didi

java - 转换运行配速

转载 作者:行者123 更新时间:2023-11-29 06:02:28 25 4
gpt4 key购买 nike

我正在尝试将我获得的运行配速转换为字符串格式(例如:“5:00”表示 5 分钟/英里)。 (我正在将分钟/英里转换为分钟/公里)。

所以这就是我正在做的:

String milePace = "05:00";
DateFormat sdf = new SimpleDateFormat("mm:ss");
Date date = sdf.parse(milePace);

Calendar cal = Calendar.getInstance();
cal.setTime(date);

long mileTime = cal.getTimeInMillis();
long kmPace = Math.round(mileTime * 0.623712);

cal.setTimeInMillis(kmPace);

不幸的是,这对我来说有意义,但不起作用。

0.623712 将是转换单位并且确实有效(只要我关心)。

当我检查 mileTime 的值时,我得到 18240000。据我所知,这就是问题所在,因为该值应为 240000(即 4 分钟 * 60 秒 * 1000)

是代码有问题还是 cal 函数中有什么东西可以给我额外的 18000000 毫秒?

提前致谢!

最佳答案

getTimeInMillis() 返回自 1970 UTC 以来的毫秒数。它会受到解析器的时区以及解析器决定用于您的输入的日期的影响。

我建议您使用 Joda Time并将该值解析为 Period

示例代码:

import org.joda.time.*;
import org.joda.time.format.*;
import java.util.*;

public class Test {
public static void main(String[] args) {
String text = "05:00";

PeriodFormatter formatter = new PeriodFormatterBuilder()
.minimumPrintedDigits(2)
.appendMinutes()
.appendSeparator(":")
.appendSeconds()
.toFormatter();

Period milePeriod = formatter.parsePeriod(text);

long mileMillis = milePeriod.toStandardDuration().getMillis();
long kmMillis = Math.round(mileMillis * 0.623712);

PeriodType minutesSeconds = PeriodType.time()
.withMillisRemoved()
.withHoursRemoved();

Period kmPeriod = new Period(kmMillis, minutesSeconds);

System.out.println(formatter.print(kmPeriod)); // Prints 03:07
}
}

关于java - 转换运行配速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9624372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com