繁体   English   中英

Shell脚本在Linux中获取日期

[英]Shell Script to Get Date In Linux

我是Shell脚本的新手。

我想编写一个脚本,以从用户那里获取任何随机的Date,格式为YYYY:MM:DD并回显(显示)星期二的星期二和星期五的日期。

例如,如果我输入日期为2013-12-11
输出应为

date1= 2013-12-06
date2= 2013-12-10

要么

输入日期为2013-12-07

产量

date1= 2013-12-03
date2= 2013-12-06

请尝试以下操作:

input=2013-12-11
lastTues=$(date -d "$input -$(date -d "$input +5 days" +%u) days" +%Y-%m-%d)
lastFri=$(date -d "$input -$(date -d "$input +2 days" +%u) days" +%Y-%m-%d)

此命令首先计算输入日期与上一个星期二(或星期五)之间有多少天,称为X 然后,它运行date -d "inputDate -X days"以计算新日期。

Perl解救:

#!/usr/bin/perl
use warnings;
use strict;

use DateTime;

sub tuefri {
    my ($year, $month, $day) = split /[^0-9]/, shift;
    my $date = 'DateTime'->new( year  => $year,
                                month => $month,
                                day   => $day,
                              );
    $date->subtract(days => 7);
    my @result;
    until (2 == @result) {
        push @result, $date->ymd if grep $_ == $date->day_of_week, 2, 5;
        $date->add(days => 1);
    }
    return @result
}

my $i = 1;
print 'date', $i++, "= $_\n" for tuefri(shift);

使用python-dateutil模块的解决方案:

import fileinput
from dateutil.relativedelta import TU, FR, relativedelta
from datetime import date

for line in fileinput.input():
    d = date(*(map(int, line.rstrip().split('-'))))
    print(d + relativedelta(weekday=FR(-1)))
    print(d + relativedelta(weekday=TU(-1)))

像这样运行:

python script.py <<<"2013-12-11"

产生:

2013-12-06
2013-12-10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM