有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将简单时间格式转换为特殊时间格式(hhmmt)

我正在尝试将时间格式(hh:mm:ss)转换为此特殊时间格式(hhmmt)

特殊时间格式(STF)是一个5位整数值,格式为[hhmmt],其中hh为小时,mm为分钟,t为十分之一分钟

例如,04:41:05将转换为4411

我不知道如何将秒值(05)转换为十分之一分钟(1)

编辑:

我已经将Adithya的建议合并到下面,将秒转换为十分之一分钟,但我仍然被卡住了

这是我目前的代码:

String[] timeInt = time.split(":");
String hours = timeInt[0];
String minutes = timeInt[1];
double seconds = Double.parseDouble(timeInt[2]);

int t = (int) Math.round(seconds/6);

if (t>=10) {
    int min = Integer.parseInt(minutes);
    // min+=1;
    t = 0;
}

String stf="";
stf += hours;
stf += minutes;
stf += String.valueOf(t);

int stf2 = Integer.parseInt(stf);
return stf2;

我使用一个字符串来存储分钟值,但由于它是一个字符串而不是整数,因此很难对其进行递增。但是当计算“t”(十分之一分钟)时,如果它超过10,我必须加1到分钟。如果我再次使用parseInt,它将再次在分钟前排除0

我怎样才能保留前导零,并且仍然增加分钟数

谢谢


共 (2) 个答案

  1. # 1 楼答案

    我猜,它是秒的值,而不是十分之一分钟,也就是6秒。所以t的公式是

    t= seconds/6 //rounded off to nearest integer
    

    这是有道理的,因为这个值总是在0到9之间,因为秒的范围是0到59,所以它总是一个位数

    以你为例

     t = 5/6 = 0.833 = rounded off to 1
    
  2. # 2 楼答案

    注意除法中的6.0f——这有助于避免整数截断

    string FormatSpecialTime(string time)
    {
        if (time.Length != 8) throw YourException();
    
        int HH, mm, SS, t;
        if (!int.TryParse(time.Substring(0, 2), out HH)) HH = 0;
        if (!int.TryParse(time.Substring(0, 2), out mm)) mm = 0;
        if (!int.TryParse(time.Substring(0, 2), out SS)) SS = 0;
    
        t = (int) Math.Round(SS / 6.0f);
    
        if (t >= 10) 
        {
            mm++;
            t = 0;
        }
        if (mm >= 60) 
        {
            HH += mm / 60;
            mm = mm % 60;
        }
    
        return HH.ToString() + (mm > 10 ? mm.ToString() : @"0" + mm) + t;
    }