Преобразовать простой формат времени в специальный формат времени (ччммт) - PullRequest
0 голосов
/ 25 августа 2011

Я пытаюсь преобразовать формат времени (чч: мм: сс) в этот специальный формат времени (ччммт)?

Специальный формат времени (STF) представляет собой 5-значное целочисленное значение с форматом[ччммт] где чч - часы, мм - минуты, а т - десятая часть минуты.

Например, 04:41:05 конвертируется в 4411.

Яне знаете, как преобразовать значение секунд (05) в одну десятую минуты (1).

Редактировать:

Я включил приведенное ниже предложение Адити для преобразованиясекунд до десятых долей минуты, но я все еще застрял.

Вот мой текущий код:

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» (десятой минуты) я должен добавить 1 к минутам, если он превышает 10. Если я снова буду использовать parseInt, он снова исключит 0 перед минутами.

Как мне сохранить ведущий ноль и при этом увеличивать минуты?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2012

Обратите внимание на 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;
}
0 голосов
/ 25 августа 2011

Полагаю, это значение секунд по сравнению с десятой долей минуты, которая составляет 6 секунд.Таким образом, формула для t будет

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

Это имеет смысл, так как это значение всегда находится в диапазоне от 0 до 9, а секунды в диапазоне от 0 до 59, поэтому это всегда одна цифра

Для вашегопример

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