Chinaunix

标题: 怎么求两个日期中间的间隔日期? [打印本页]

作者: 赛萌    时间: 2016-03-21 16:25
标题: 怎么求两个日期中间的间隔日期?
本帖最后由 赛萌 于 2016-03-23 14:05 编辑

25        2        0        二元代金券        2016-03-07 00:00:02                2016-03-14 00:00:02
25        2        0        二元代金券        2016-03-07 00:00:02                2016-03-14 00:00:02
25        2        0        二元代金券        2016-03-07 00:00:09         2016-03-14 00:00:09
25        2        0        二元代金券        2016-03-07 00:00:13         2016-03-14 00:00:13
25        2        0        二元代金券        2016-03-07 00:00:16                2016-03-14 00:00:16
25        2        0        二元代金券        2016-03-07 00:00:22         2016-03-14 00:00:22
25        2        0        二元代金券        2016-03-07 00:00:27          2016-03-14 00:00:27
25        2        0        二元代金券        2016-03-07 00:00:30                2016-03-14 00:00:30

怎么得出:
2016-03-07 25 2 二元代金券  8张
2016-03-08 25 2 二元代金券  8张
2016-03-09 25 2 二元代金券  8张
2016-03-10 25 2 二元代金券  8张
2016-03-11 25 2 二元代金券  8张
016-03-12 25 2 二元代金券  8张
2016-03-13 25 2 二元代金券  8张
作者: sunzhiguolu    时间: 2016-03-21 17:05
回复 1# 赛萌
说下求间隔日期有什么规律? 如何计算的?

   
作者: sunzhiguolu    时间: 2016-03-21 17:08
本帖最后由 sunzhiguolu 于 2016-03-21 17:12 编辑

回复 1# 赛萌
代金券的张数如何计算?

   
作者: 赛萌    时间: 2016-03-21 17:20
回复 2# sunzhiguolu


    这是前两列表示满多少元可以使用几元优惠券,以这里的第一行举例说,满25元可以使用2元优惠券,使用日期是2015-12-27 12:55:52        到2016-03-20 23:59:59,就表示在这期间的每一天你都拥有这个优惠券,那么第二行又有这个满25可以减2的优惠券,单单统计这两行,就是说2016-03-14到2016-03-20这7天里你有满25减2的二元优惠券有两张。
作者: 赛萌    时间: 2016-03-21 17:21
回复 3# sunzhiguolu


    还有其他要求的代金券,目的是求每天有多少张不同的优惠券,以及对对应的券有几张。
作者: sunzhiguolu    时间: 2016-03-21 17:57
回复 5# 赛萌
拿出点测试数据来, 也好写代码. (突出有要求的部分)

   
作者: 赛萌    时间: 2016-03-21 18:41
回复 6# sunzhiguolu


    附件已上传,请测试。
作者: 赛萌    时间: 2016-03-21 18:52
回复 6# sunzhiguolu


    我觉得可能Perl实现不了。
作者: sunzhiguolu    时间: 2016-03-21 19:16
本帖最后由 sunzhiguolu 于 2016-03-21 19:47 编辑

回复 8# 赛萌
把条件详细的说明一下, 很有可能实现不了, 不是 perl 而是我的水平.
例如, 每列的含义, 进行处理时那些列的数据是关联的, 等等... 我看到 2,3,4 列的数据变化较多.

   
作者: 赛萌    时间: 2016-03-21 19:40
回复 9# sunzhiguolu


    恩,有重复应该是Perl实现不了
作者: sunzhiguolu    时间: 2016-03-21 21:07
回复 10# 赛萌
不是 perl 实现不了, 而是有些条件并不是很清晰, 未能找到合适的键. 而且有部分数据格式不一致, 这倒是给处理增加了难度.

   
作者: sunzhiguolu    时间: 2016-03-21 22:34
本帖最后由 sunzhiguolu 于 2016-03-21 22:37 编辑

我查了下, 主要问题集中在第二列.
  1. 443237          17      0       生日特礼        2016-03-07 12:25:24     2016-03-14 12:25:24 MissIndex=>1,
  2. 756903          8       1       生日特礼        2016-03-07 21:01:16     2016-03-14 21:01:16 MissIndex=>1,
  3. 529843          24      1       生日特礼        2016-03-07 23:46:07     2016-03-14 23:46:07 MissIndex=>1,
  4. 77812           23      0       生日特礼        2016-03-08 14:23:52     2016-03-15 14:23:52 MissIndex=>1,
  5. 690772          21      1       生日特礼        2016-03-08 22:06:52     2016-03-15 22:06:52 MissIndex=>1,
  6. 54815           10      1       生日特礼        2016-03-08 23:08:16     2016-03-15 23:08:16 MissIndex=>1,
  7. 778466          19      1       生日特礼        2016-03-09 06:25:43     2016-03-16 06:25:43 MissIndex=>1,
  8. 501329          22      1       生日特礼        2016-03-09 14:17:30     2016-03-16 14:17:30 MissIndex=>1,
  9. 179357          15      1       生日特礼        2016-03-09 21:07:08     2016-03-16 21:07:08 MissIndex=>1,
  10. 662143          19      1       生日特礼        2016-03-10 08:15:30     2016-03-17 08:15:30 MissIndex=>1,
  11. 653901          14      1       生日特礼        2016-03-10 09:50:30     2016-03-17 09:50:30 MissIndex=>1,
  12. 211430          19      1       生日特礼        2016-03-10 10:23:46     2016-03-17 10:23:46 MissIndex=>1,
  13. 1132            3       0       3元无门槛优惠券 2016-03-10 16:01:04     2016-03-17 16:01:04 MissIndex=>1,
  14. 1366            3       1       3元无门槛优惠券 2016-03-10 16:01:07     2016-03-17 16:01:07 MissIndex=>1,
  15. 1132            3       1       3元无门槛优惠券 2016-03-10 16:01:28     2016-03-17 16:01:28 MissIndex=>1,
  16. 1366            3       1       3元无门槛优惠券 2016-03-10 16:02:56     2016-03-17 16:02:56 MissIndex=>1,
  17. 231417          3       1       3元无门槛优惠券 2016-03-10 16:03:12     2016-03-17 16:03:12 MissIndex=>1,
  18. 1132            3       1       3元无门槛优惠券 2016-03-10 16:03:31     2016-03-17 16:03:31 MissIndex=>1,
  19. 231417          3       1       3元无门槛优惠券 2016-03-10 16:03:39     2016-03-17 16:03:39 MissIndex=>1,
  20. 231417          3       1       3元无门槛优惠券 2016-03-10 16:04:08     2016-03-17 16:04:08 MissIndex=>1,
  21. 1262            3       1       3元无门槛优惠券 2016-03-10 16:21:17     2016-03-17 16:21:17 MissIndex=>1,
  22. 868962          3       1       3元无门槛优惠券 2016-03-10 16:22:24     2016-03-17 16:22:24 MissIndex=>1,
  23. 3285            3       1       3元无门槛优惠券 2016-03-10 17:19:53     2016-03-17 17:19:53 MissIndex=>1,
  24. 3365            3       1       3元无门槛优惠券 2016-03-10 17:52:11     2016-03-17 17:52:11 MissIndex=>1,
  25. 241567          17      1       生日特礼        2016-03-11 08:11:49     2016-03-18 08:11:49 MissIndex=>1,
  26. 707166          11      1       生日特礼        2016-03-12 00:11:41     2016-03-19 00:11:41 MissIndex=>1,
  27. 73863           11      1       生日特礼        2016-03-12 00:42:19     2016-03-19 00:42:19 MissIndex=>1,
  28. 315082          5       1       生日特礼        2016-03-12 07:02:20     2016-03-19 07:02:20 MissIndex=>1,
  29. 351587          18      0       生日特礼        2016-03-12 08:09:38     2016-03-19 08:09:38 MissIndex=>1,
  30. 30027           11      0       生日特礼        2016-03-12 09:14:02     2016-03-19 09:14:02 MissIndex=>1,
  31. 452351          5       1       生日特礼        2016-03-12 09:16:44     2016-03-19 09:16:44 MissIndex=>1,
  32. 895650          14      0       生日特礼        2016-03-12 10:40:21     2016-03-19 10:40:21 MissIndex=>1,
  33. 121916          11      1       生日特礼        2016-03-12 20:25:08     2016-03-19 20:25:08 MissIndex=>1,
  34. 267709          21      1       生日特礼        2016-03-13 08:02:15     2016-03-20 08:02:15 MissIndex=>1,
  35. 522476          5       1       生日特礼        2016-03-13 21:47:43     2016-03-20 21:47:43 MissIndex=>1,
  36. 281901          5       1       生日特礼        2016-03-14 08:25:59     2016-03-21 08:25:59 MissIndex=>1,
  37. 656921          21      1       生日特礼        2016-03-14 09:20:05     2016-03-21 09:20:05 MissIndex=>1,
  38. 35379           6       1       生日特礼        2016-03-14 13:14:07     2016-03-21 13:14:07 MissIndex=>1,
  39. 516361          22      1       生日特礼        2016-03-14 14:24:29     2016-03-21 14:24:29 MissIndex=>1,
  40. 529546          11      1       生日特礼        2016-03-14 21:13:29     2016-03-21 21:13:29 MissIndex=>1,
  41. 189474          18      1       生日特礼        2016-03-15 00:04:45     2016-03-22 00:04:45 MissIndex=>1,
  42. 410548          12      1       生日特礼        2016-03-15 11:48:38     2016-03-22 11:48:38 MissIndex=>1,
  43. 551424          6       1       生日特礼        2016-03-15 23:08:00     2016-03-22 23:08:00 MissIndex=>1,
  44. 209302          24      0       生日特礼        2016-03-16 00:10:16     2016-03-23 00:10:16 MissIndex=>1,
  45. 178246          19      0       生日特礼        2016-03-16 00:49:01     2016-03-23 00:49:01 MissIndex=>1,
  46. 260674          25      0       生日特礼        2016-03-16 15:59:52     2016-03-23 15:59:52 MissIndex=>1,
  47. 277951          25      1       生日特礼        2016-03-16 19:09:33     2016-03-23 19:09:33 MissIndex=>1,
  48. 27918           6       1       生日特礼        2016-03-17 04:29:54     2016-03-24 04:29:54 MissIndex=>1,
  49. 411083          10      0       生日特礼        2016-03-17 08:14:47     2016-03-24 08:14:47 MissIndex=>1,
  50. 518526          21      1       生日特礼        2016-03-17 15:33:52     2016-03-24 15:33:53 MissIndex=>1,
  51. 435823          12      1       生日特礼        2016-03-17 16:54:59     2016-03-24 16:55:00 MissIndex=>1,
  52. 148980          10      0       生日特礼        2016-03-18 15:01:40     2016-03-25 15:01:40 MissIndex=>1,
  53. 654819          20      1       生日特礼        2016-03-18 15:53:27     2016-03-25 15:53:28 MissIndex=>1,
  54. 454772          20      1       生日特礼        2016-03-18 22:57:16     2016-03-25 22:57:16 MissIndex=>1,
  55. 442462          21      1       生日特礼        2016-03-18 23:02:20     2016-03-25 23:02:20 MissIndex=>1,
  56. 400820          21      1       生日特礼        2016-03-19 07:49:48     2016-03-26 07:49:48 MissIndex=>1,
  57. 524311          25      0       生日特礼        2016-03-20 04:52:31     2016-03-27 04:52:31 MissIndex=>1,
  58. 134446          15      0       生日特礼        2016-03-20 08:47:07     2016-03-27 08:47:07 MissIndex=>1,
  59. 641344          10      0       生日特礼        2016-03-20 12:12:12     2016-03-27 12:12:12 MissIndex=>1,
  60. 435679          13      1       生日特礼        2016-03-20 12:32:21     2016-03-27 12:32:21 MissIndex=>1,
  61. 491757          9       1       生日特礼        2016-03-21 11:21:18     2016-03-28 11:21:18 MissIndex=>1,
  62. 171692          21      0       生日特礼        2016-03-21 11:52:18     2016-03-28 11:52:18 MissIndex=>1,
  63. Stat <62> lines.
复制代码
大家进行处理的时候, 还请多加小心才好...
作者: 赛萌    时间: 2016-03-21 23:28
回复 12# sunzhiguolu


    谢谢。不过你的说是什么意思?这个东西不能写哈希,因为都有重复,没有一列里的内容不重复的
作者: RE_HASH    时间: 2016-03-21 23:39
Date::Calc::Iterator
作者: sunzhiguolu    时间: 2016-03-21 23:40
回复 13# 赛萌
数据文件是你提供的, 找到一个解决方案是你的期望.
不知道现在的你如何打算?

   
作者: 赛萌    时间: 2016-03-22 00:05
回复 15# sunzhiguolu

我给上司说perl实现不了
   
作者: RE_HASH    时间: 2016-03-22 02:34
本帖最后由 RE_HASH 于 2016-03-22 05:53 编辑

回复 14# RE_HASH

1。用1楼的数据
2。CPAN 安装Date::Calc::Iterator模块
-------------------
   
use Date::Calc::Iterator;

while (<>)
{
  s/  +/\t/g;
  my @F = split /\t/, $_;
  my $key = join "\t" , @F[0,1,3];
  
  my @start = /(\d{4})-(\d{2})-(\d{2})/;
  my @end = /\G.*(\d{4})-(\d{2})-(\d{2})/;
  
  my $i1 = Date::Calc::Iterator->new(from => \@start , to => \@end);
  while ($D = $i1->next)
  {
          my $Date = join '-', @$D;
          $Date =~ s/-(\d)\b/-0\1/g;
          $OUT->{$Date}->{$key} ++;
  }
}

foreach  $D (sort keys %$OUT)
{
  foreach  $key (sort keys %{$OUT->{$D}})
  {
          print "$D\t$key\t$OUT->{$D}->{$key}\n" ;
  }   
}


——————
$> perl dates.pl zz
2016-03-07      25      2       二元代金券      8
2016-03-08      25      2       二元代金券      8
2016-03-09      25      2       二元代金券      8
2016-03-10      25      2       二元代金券      8
2016-03-11      25      2       二元代金券      8
2016-03-12      25      2       二元代金券      8
2016-03-13      25      2       二元代金券      8
2016-03-14      25      2       二元代金券      8

作者: 赛萌    时间: 2016-03-22 12:09
回复 17# RE_HASH


    哇咔咔,好厉害,谢谢。
作者: iamlimeng    时间: 2016-03-22 14:06
Perl非常擅长干这种活!
作者: 赛萌    时间: 2016-03-22 19:50
回复 19# iamlimeng


   啊???真的吗,原谅我,我还是个低级的菜鸟,还请大神指点一二,谢谢。
作者: sunzhiguolu    时间: 2016-03-22 21:35
回复 20# 赛萌
你把你的数据整理下, 或者应该说下, 如果字段数量不一致时缺失的字段应该如何处理. 毕竟数据是你提供的, 你对它应该最了解, 其他你懂得...

   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2