我有一个应用程序循环读取一个大文本文件并运行至少48小时。
我想在23.00到08.00(晚上11点到早上8点)停止执行,然后在白天继续执行。
我尝试了以下代码,但它没有退出循环。
./gradlew connectedAndroidTest
这不能按预期工作。现在它是18:48并且循环立即退出,除非我使用前一小时:
my $min = (localtime)[1];
my $hour = (localtime)[2];
while ( $hour > 18 and $min > 0 ) {
sleep(1);
$hour = (localtime)[2];
$min = (localtime)[1];
}
答案 0 :(得分:4)
您需要多次检查时间: - )
而不是调用strftime()
,为什么不使用localtime()
的返回值?
my $hour = (localtime)[2];
while ($hour >= 23 or $hour < 8) {
sleep(1);
$hour = (localtime)[2];
}
更新:更有效的方法可能是计算出sleep()
多长时间才能在早上8点醒来。一个天真的方法是这样的:
if ((localtime)[2]) >= 23) {
sleep(9 * 60 * 60); # sleep for nine hours
}