从时间戳列表中获取上午 8 点到下午 5 点之间的时间戳

Posted

技术标签:

【中文标题】从时间戳列表中获取上午 8 点到下午 5 点之间的时间戳【英文标题】:Get timestamps between 8am to 5pm from timestamps list 【发布时间】:2022-01-16 16:30:36 【问题描述】:

我有一个提取日期时间戳的列表。从这个列表中,我想为每个日期/时间打印上午 8 点到下午 5 点之间的时间戳。但我下面的代码不会产生任何输出。

数据:

2021-Sep-16 21:24:48
2021-Sep-17 03:31:05
2021-Sep-17 08:30:23
2021-Sep-17 09:42:43
2021-Sep-17 12:43:14
2021-Sep-17 14:43:23
2021-Sep-17 15:50:34
2021-Sep-17 16:50:35
2021-Sep-18 03:31:05
2021-Sep-18 08:30:23
2021-Sep-18 09:42:43
2021-Sep-18 12:43:14
2021-Sep-18 14:43:23
2021-Sep-18 15:50:34
2021-Sep-18 22:50:35

预期输出:

2021-Sep-17 08:30:23
2021-Sep-17 09:42:43
2021-Sep-17 12:43:14
2021-Sep-17 14:43:23
2021-Sep-18 08:30:23
2021-Sep-18 09:42:43
2021-Sep-18 12:43:14
2021-Sep-18 14:43:23

我的代码:

sub read_timestamps
    my $file = './logs/file.log';
    open(IN, "<" ,"$file") or die "Couldn't open file $!";
    open(OUT, ">" ,"_trash/tmp/raw/0-out.txt") or die "Couldn't open file $!";

    my @content = <IN>;
    my $start="08:00:00";
    my $end = "17:00:00";

    foreach $lines(@content)
        if($lines = ~/$start/../$end/)
             print OUT ("$1 \n") if($lines =~ /(\d4-\w+-\d2 \d\d:\d\d:\d\d)/);
        
     

【问题讨论】:

【参考方案1】:
while (<>) 
   my ( $h ) = / (\d+)/
      or next;

   print if $h >= 8 && $h < 17;

【讨论】:

以上是关于从时间戳列表中获取上午 8 点到下午 5 点之间的时间戳的主要内容,如果未能解决你的问题,请参考以下文章

在 MS Access 中获取两个时间值之间的记录

pytz:获取所有时区,现在在特定时间范围之间

Oracle 查询排除周末和下午 6 点到晚上 9 点

MySQL:搜索从昨天下午 3 点到今天下午 4 点的订单

Jenkins定时构建时间设置

Jenkins定时构建时间设置