首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PERL:输入日期时间,从部分输入创建一个起始点和结束点,并检查是否在

PERL:输入日期时间,从部分输入创建一个起始点和结束点,并检查是否在
EN

Stack Overflow用户
提问于 2018-06-09 16:26:18
回答 1查看 81关注 0票数 1

作为初学者,我努力奋斗。

我想从用户那里得到这样的日期时间输入。

2018/06/21-10:30

然后,我有另外两次,标志着一段时间的开始和结束。

上午9:00及下午4:00

我想要的是脚本接受输入。将日期部分应用于另外两次,这样它们将如下所示:

2018/06/21-09:00和2018/06/21-14:00

然后,我希望运行来自用户的输入,并检查输入的时间是否在另外两个新形成的日期时间内。

有什么好办法吗?还是另一种方法?

*编辑1::

好的。我一直在玩a我找到了一个方法。

有什么建议吗,还是我走对了路?

代码语言:javascript
复制
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;
use utf8;
use open qw(:encoding(UTF-8) :std);

use DateTime::Format::Strptime;

print " Enter START with following pattern Y/m/d-H:M -> ";
chomp ( my $input1 = <> );

my $parser = DateTime::Format::Strptime->new(pattern => '%Y/%m/%d-%H:%M');

my $dt1 = $parser->parse_datetime($input1) or die;

my $wd_start_ftd = $dt1->ymd('/')."-09:00";
my $wd_stop_ftd = $dt1->ymd('/')."-14:00";

print "\n Start of the day is ", $wd_start_ftd;
print "\n End of the day is ", $wd_stop_ftd;

这给了我这个

输入模式Y/m/d-H:M -> 2018/06/07-10:30 一天的开始是2018/06/07-09:00一天结束是2018/06/07-14:00

现在,我只需要得到一些东西来测试输入在开始值和停止值之间是否是ib。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-09 20:14:26

下面是一个充分发挥作用的例子。它可能需要对您自己的个人喜好进行一些调整,比如您想要的输入信息和其他东西的打印。但你可能知道怎么做!

如果您运行脚本,它将等待输入的YYYY/MM/DD-hh:mm格式,并将告诉您,如果是上午9点到下午2点。

代码语言:javascript
复制
use strict;
use warnings;

use DateTime::Format::Strptime;

chomp ( my $input =  <>  );

my $strptime = DateTime::Format::Strptime->new(pattern => '%Y/%m/%d-%H:%M');

my $dt_check = $strptime->parse_datetime($input);
my $dt_start = clone_with_time($dt_check, '09:00');
my $dt_stops = clone_with_time($dt_check, '14:00');


my $check = ( $dt_start lt $dt_check and $dt_check lt $dt_stops ) ? "Yay": "Nay";

print "$check\n";

# return a cloned DateTime object, set with the given time
sub clone_with_time {
    my ($dt_old, $time) = @_;
    my ($hh, $mm) = split /:/, $time;
    my $dt_new = $dt_old->clone;
    $dt_new->set( hour => $hh, minute => $mm);
    return $dt_new
}

clone_with_time子例程接受一个DateDime对象(我们从输入中获得的对象)和一个hh:mm格式的时间字符串。然后,子例程克隆该对象并相应地设置时间。

在本例中,如果需要多次重复某些语句以生成$dt_start$dt_stops,那么子例程是很好的。它保持了主程序的清洁和易于跟踪。在编写代码时,请记住干的

TIMTOWTDI

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50776304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档