【发布时间】:2017-11-14 01:40:17
【问题描述】:
我需要一个算法来计算这些时间之间的毫秒数
HH:MM:SS,MS --> HH:MM:SS,MS
00:08:50,800 --> 00:08:55,250
我写了 4 次 java 代码,但我认为我没有理解这个想法,我搜索了它,但所有解决方案都使用了库,我不想使用库。
这是我写的java代码,但它没有给我正确的偏移量
private int findOffset(Time t1, Time t2) {
int offset = 0;
int diffHH = (t2.getHH() - t1.getHH());
int diffMM = (t2.getMM() - t1.getMM());
int diffSS = (t2.getSS() - t1.getSS());
int diffMS = (t2.getMS() - t1.getMS());
if (diffHH != 0) {
if (diffHH < 0) {
diffHH = 24 - t1.getHH() + t2.getHH();
}
offset += (3600000 * diffHH);
}
if (diffMM != 0) {
if (diffMM < 0) {
diffMM = 60 - t1.getMM() + t2.getMM();
}
offset += (60000 * diffMM);
}
if (diffSS != 0) {
if (diffSS < 0) {
diffSS = 60 - t1.getSS() + t2.getSS();
}
offset += (1000 * diffSS);
}
if (diffMS != 0) {
if (diffMS < 0) {
diffMS = t1.getMS() + t2.getMS();
}
offset -= diffMS;
}
return offset;
}
这是另一个代码
private int findOffset2(Time t1, Time t2) {
int offset = 0;
int hh1 = t1.getHH(), hh2 = t2.getHH();
int mm1 = t1.getMM(), mm2 = t2.getMM();
int ss1 = t1.getSS(), ss2 = t2.getSS();
int ms1 = t1.getMS(), ms2 = t2.getMS();
while (hh1 != hh2 || mm1 != mm2
|| ss1 != ss2 || ms1 != ms2) {
offset++;
ms1++;
while (ms1 >= 1000) {
ss1++;
while (ss1 >= 60) {
ss1 -= 60;
mm1++;
}
while (mm1 >= 60) {
mm1 -= 60;
hh1++;
}
ms1 -= 1000;
}
if(hh1 == hh2 && mm1 == mm2
&& ss1 == ss2 && ms1 == ms2){
System.out.println("test");
}
}
return offset;
}
【问题讨论】:
-
那么您应该将您的代码添加到问题中,即使它似乎无法正常工作或以其他方式发布会让人觉得很愚蠢,但请执行此操作。并用 Java 标记您的问题。
-
只计算毫秒,然后将它们转换为小时、分钟、秒和毫秒,并以上述格式打印
-
@yacc 我不是要代码我只是想要一个描述或算法来阐明如何做,所以我可以尝试另一种方法。
-
@LuaiGhunim 你没看懂我,时间格式是输入,毫秒是输出。