我有一个火车时刻表应用程序,我正在尝试使用以下格式HH:MM来计算两次之间的差异,因此我的用户可以轻松查看火车是否迟到(注意:我正在获取“真实”来自互联网的数据,因此它是最新的)。这就是我现在正在做的事情:
//schedule time of the train
int hs=12;
int ms=0;
//real time of the train
int hr=12;
int mr=15;
int t1=hs*60 + ms;
int t2=hr*60 + mr;
int d; //integer for the difference in minutes
if(hr>=hs) d=t2-t1; //standard situation
else d=1440+t2-t1; //for situation like sch: 23:55, real: 00:05
这是对的吗?我忘了什么吗?我在此算法之前尝试了几次,所有这些都有轻微的错误,这可能会让我的用户感到困惑。据我所知,这个没有任何故障,至少我找不到任何故障。
P.S。:我不会使用任何第三方库,所以我必须编写自己的算法,所以我希望它将是最终的......
THX!
编辑:注意:在这个例子中,hs / ms / hr / mr的值是硬编码的,在我的应用程序中,我为每一行正确更新了它们。
答案 0 :(得分:1)
除了夏令时外,这应该给你在任何一天或任何一天的边界上的微小差异。
答案 1 :(得分:1)
您应该使用Java Date和Calendar以及DateFormat实用程序类来实现您想要的(它们不是第三方,它们是Java库并包含在Android SDK中)
你在这里有一个很好的例子:Is there a function to calculate the difference between two times and display a relative result?
对于DateFormat类,你有一个很好的例子:http://www.exampledepot.com/egs/java.text/formatdate.html