我正在尝试将时间格式(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。
如何保留前导零并仍然增加分钟?
感谢。
答案 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;
}