【发布时间】:2011-11-01 02:26:23
【问题描述】:
好吧,与其说是编程问题,但我似乎只能想到非常复杂的方法来解决这个问题。
我们在办公室运行了一个脚本。我们需要确定此脚本仅在工作时间(工作时间为上午 9 点至下午 5 点)中需要多长时间。例如,假设脚本在星期一下午 2 点开始,在星期二下午 4 点结束。完成此脚本需要 26 小时,但只需 10 小时即可完成。这个脚本可以在一个工作日内完成,但也可以跨越很多天。该脚本只能在一个工作日内开始和结束。时间戳以 Unix 格式完成。
我不知道如何在 SQL 中做到这一点,但我知道网络管理员更喜欢这个。
服务器端脚本语言是 PHP。所以这将是第二个可用的选项。我的尝试如下:
$workingDay = 24;
$workingDayHours = 8;
$workingTime = 0;
while($timeTaken >= $workingDay) {
$workingTime += $workingDayHours;
$timeTaken -= $workingDay;
}
$workingTime += $timeTaken;
我现在真的不能好好思考,工作太多了,所以虽然这个方法很愚蠢,但它似乎在这种情况下工作,因为 $timeTaken 总是 = 24。
无论如何,很高兴看到一种更好、更智能的方法(也许可以在任意小时内工作)。 SQL 也很棒。
【问题讨论】:
-
如果脚本没有在工作日下午 5 点之前完成,会发生什么情况?是否暂停并在第二天早上 9 点恢复?或者它会继续 - 在这种情况下,如果它在晚上 9 点结束会发生什么?
-
周末怎么样?周五下午 4 点开始脚本,周六和周日运行,周一上午 9 点结束,算作 2 小时?
-
@aleks-g 好吧,我不知道系统是如何组合在一起的,但显然时间戳只能在上午 9 点和下午 5 点之间。脚本不会在这些时间之外完成。
-
该死的新人按回车发表评论,真烦人...
-
@arnep 嗯,周末是我没想到的。如果脚本从下午 4 点开始并在上午 9 点结束,则该脚本应计为 1 小时。但是,我发布的脚本不会那样工作:P