免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1515 | 回复: 0

显示从之前的某个日期到今天中间经过了哪些天 [复制链接]

论坛徽章:
0
发表于 2010-11-18 16:22 |显示全部楼层
本帖最后由 heidern 于 2010-11-18 16:24 编辑

代码写的不好,大家点评一下
原文地址:http://blog.chinaunix.net/u/12973/showart_2399661.html
  1. #!/usr/local/perl5.12.2/bin/perl
  2. #Author:
  3. #   Hyper Lau <timwalker@gmail.com>
  4. #Website:
  5. #   http://heidern.cublog.cn
  6. #File:
  7. #   unix_time.pl
  8. #Create Date:
  9. #   Wed 17 Nov 2010 04:42:07 PM CST
  10. use strict;
  11. use warnings;
  12. use Time::Local;
  13. $|=1;
  14. my $old_date_Y='2010';
  15. my $old_date_M='09';
  16. my $old_date_D='20';
  17. # when you want to convert time to unixstamp,don't add 1 to month!!
  18. my $old_date_unix=timelocal(0,0,0,$old_date_D,$old_date_M-1,$old_date_Y);
  19. my $old_date=$old_date_Y.$old_date_M.$old_date_D;
  20. my ($now_date_Y,$now_date_M,$now_date_D)=get_now_date();
  21. my $now_date=$now_date_Y.$now_date_M.$now_date_D;
  22. my $now_date_unix=get_now_date_unix();
  23. while ($old_date_unix <= $now_date_unix) {
  24.     print "now date is $now_date , unixstamp is $now_date_unix\n";
  25.     print "old date is $old_date , unixstamp is $old_date_unix\n";
  26.     print "processing ".get_time($old_date_unix)." data...\n";
  27.     <STDIN>;
  28.     print "process ok! \n";
  29.     $old_date_unix+=86400;
  30. }
  31. print "===========ALL PROCESSED!!===========\n";

  32. sub get_time {
  33. # in unixstamp
  34. # out "YYYY-MM-DD HH:mm:SS"
  35.     my ($time)=@_;
  36.     $time=time until (defined($time));
  37.     my @time_format = (localtime($time))[5,4,3,2,1,0];
  38.     $time_format[0] += 1900;
  39.     $time_format[1] += 1;
  40.     foreach $_(@time_format) {
  41.         $_ = sprintf("%02d", $_);
  42.     }
  43.     my $cur_time = "$time_format[0]-$time_format[1]-$time_format[2] $time_format[3]:$time_format[4]:$time_format[5]";
  44.     return($cur_time);
  45. }
  46. sub get_now_date {
  47. # in normal
  48. # out now date(YYYY-MM-DD)
  49.     my @time_format = (localtime())[5,4,3];
  50.     $time_format[0] += 1900;
  51.     $time_format[1] += 1;
  52.     foreach $_(@time_format) {
  53.         $_ = sprintf("%02d", $_);
  54.     }
  55.     return($time_format[0],$time_format[1],$time_format[2]);
  56. }
  57. sub get_now_date_unix {
  58. # in normal
  59. #out unixstamp of now date(YYYY,MM,DD)
  60.     my @time_format = (localtime())[5,4,3];
  61.     $time_format[0] += 1900;
  62. # WARNING!! when you want to convert time to unixstamp,don't add 1 to month!!
  63. #    $time_format[1] += 1;
  64.     foreach $_(@time_format) {
  65.         $_ = sprintf("%02d", $_);
  66.     }
  67.     my $cur_date_unix=timelocal(0,0,0,$time_format[2],$time_format[1],$time_format[0]);
  68.     return($cur_date_unix);
  69. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP