my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday)=localtime(time)
$mon++
$year+=1900
你要判断星期一的方法简单,在上面的语句段之后加上这一句就行:
exit if ($wday!=1)
你的第二个问拿巧题首先给你个建议,把要把yyyymmdd.txt的所有文件放在一个目录下,这样这个目录下的文件会太多, *** 作系统对文件是顺序查找,这伍搜样性能会很低下,建议把文件分开保存在不同的目录的下,我一般是按年度建立一级目录,按星期建立二级目录,具体文件放在“年度\星期\”目录下。全年中第几个星期的值这样判断:int(($yday-1)/7)+1
如果你采纳了我的建议,自然消橘键就是判断某个目录下的所有文件,不需要核对名字了。
楼上那位的逻辑不正确,正确的方法如下:($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time)
$num = $yday + 1# 因为$yday是从0开始计算,加数粗上1,就是从1开芹饥始数数的了
if ($num % 7 == 0) {
$result = $num / 7
} else {
$result = int($num / 7 + 1)
}
print $result
必须对是否可薯首镇以对7整除作分别处理,理由如下:
$ cat a.pl
#!/usr/bin/env perl
for ($i = 1$i <100$i++) {
if ($i % 7 == 0) {
$num = $i / 7
} else {
$num = int($i / 7 + 1)
}
printf "%02d:%02d\n", $i, $num
}
$ ./a.pl
01:01
02:01
03:01
04:01
05:01
06:01
07:01
08:02
09:02
10:02
11:02
12:02
13:02
14:02
15:03
16:03
17:03
18:03
19:03
20:03
21:03
22:04
23:04
24:04
25:04
26:04
27:04
28:04
29:05
30:05
31:05
32:05
33:05
34:05
35:05
36:06
37:06
38:06
39:06
40:06
41:06
42:06
43:07
44:07
... 后面太长省略了,你自己运行一下就知道了
从上面小测试程序可知,这样来处理才是正确的逻辑
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)