2009-10-23 77 views
2

我正在构建一个调度系统。目前的系统只是使用excel,并且他们键入的时间类似于9:3-5(意思是上午9点至下午5点)。我还没有设置这些时间将如何存储的格式,我想我可能不得不使用军事时间来计算小时数,但如果可能的话,我希望避免这种情况。但基本上我需要能够弄清楚如何计算小时数。例如9:3-5会是(7.5小时)。我也愿意以不同的方式储存时间。我只需要能够以简单的方式显示它,以便用户理解并能够计算它有多少小时。Flex:计算两次之间的小时数?

任何想法?

谢谢!

回答

3

快速肮脏丑陋的解决方案

public static const millisecondsPerHour:int = 1000 * 60 * 60; 

private function getHoursDifference(minDate:Date, maxDate:Date):uint { 
    return Math.ceil((maxDate.getTime() - minDate.getTime())/millisecondsPerHour); 
} 
+1

不那么丑陋......尽可能使用尽可能少的代码完成工作,并且对性能没有太大影响。 – 2009-10-23 17:10:43

+0

谢谢,我删除了我的版本中的Math.ceil(),因为我不想舍入,而是将小时显示为小数。 – 2009-10-23 19:28:33

0

好了,它听起来就像你在谈论的,因此目前使用Excel电子表格的人开发的,并希望“电脑化”进程的时间表或计划改变。第一次警告:“调度不是微不足道的。”如何存储时间并不是那么重要,但通常要建立一定的粒度级别并将任务时间转换为此间隔的整数倍以简化调度任务。

如果你想自动化过程或简单的错误检查,你会想抽象一些东西。一个基本的每周日历包括开始和停止时间,也许还需要转变信息。例外日历从一开始就是一个好主意。例外日历允许节假日和其他例外情况。将需要包含资源和容量信息的表格。包含所有要调度的任务以及任务之间的任何依赖关系的表将是必需的。你想考虑并发需求吗? (我需要一辆卡车和一名司机......)你想考虑间歇性的资源调度吗?你应该支持前进还是后退计划?你打算支持如果情况? (然后,您需要一个独立于计划时间表的主计划)您是否想要优先考虑如何在计划中安排任务? (这里需要大量的工作,具体取决于要完成的工作。)您可能很想确定要实际计划的任务子集。然后只需提供一个报告机制,以显示剩余工作是否可以适应日程表中的空白区域。 (如果你不能在可用时间内完成最苛刻的10%,而关心另外90%的时间)

第二警告:“如果上帝写了时间表,大多数公司都无法遵循它。