Ris*_*shi 1 algorithm time datetime
我有一个小时选择下拉0-23和分钟选择下拉0-59为Start time和End time(所以四个控件).
我正在寻找一种使用这四个值来计算时差的算法.
由于它们没有存储在花哨的日期/时间选择控件中,我认为我不能使用任何标准的日期/时间操作功能.
我如何计算两次之间的差异?
pax*_*blo 13
这个伪代码为您提供算法,以分钟计算出差异.
它假设,如果开始时间在结束时间之后,则开始时间实际上是前一天.
startx = starthour * 60 + startminute
endx = endhour * 60 + endminute
duration = endx - startx
if duration < 0:
duration = duration + 1440
Run Code Online (Sandbox Code Playgroud)
该startx和endx值是自午夜的分钟数.
这基本上是这样做的:
尽管你不能使用日期/时间操作功能,但不要太确定.您可能会发现您可以轻松地构建日期/时间并使用以下内容计算差异:
DateTime startx = new DateTime (1, 1, 2010, starthour, startminute, 0);
DateTime endx = new DateTime (1, 1, 2010, endhour , endminute , 0);
Integer duration = DateTime.DiffSecs(endx, startx) / 60;
if (duration < 0)
duration = duration + 1440;
Run Code Online (Sandbox Code Playgroud)
虽然你的简单场景可能不需要它.除非你发现自己做了一些棘手的日期/时间操作,否则我会坚持使用上面给出的伪代码.
如果您想将持续时间(以分钟为单位)转换为小时和分钟:
durHours = int(duration / 60)
durMinutes = duration % 60 // could also use duration - (durHours * 60)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12030 次 |
| 最近记录: |