[英]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
模块的python解决方案:
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.