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

时间:2011-08-25 08:14:22

标签: java time-format

我正在尝试将时间格式(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;

我使用String来存储分钟值,但由于它是String而不是Integer,因此很难增加它。但是当计算“t”(十分之一分钟)时,如果它超过10,我必须加1分钟。如果我再次使用parseInt,它将在几分钟之前再次排除0。

如何保留前导零并仍然增加分钟?

感谢。

2 个答案:

答案 0 :(得分:0)

我猜,它是秒的值,与十分之一秒相比,即6秒。所以t的公式是

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

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

为您的例子

 t = 5/6 = 0.833 = rounded off to 1

答案 1 :(得分:0)

注意除法中的6.0f - 这有助于避免INT截断。

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;
}