Perl Unix时间+;Solaris上n天,不带日期-d选项
我正在寻找返回日期加(或减)n天的方法。我们的Solaris 10系统没有日期的-d选项,甚至在/usr/xpg4/bin/date下也没有 我考虑了perl,在另一个线程上找到了几个示例,但系统不包括Perl Unix时间+;Solaris上n天,不带日期-d选项,perl,date,unix,solaris,Perl,Date,Unix,Solaris,我正在寻找返回日期加(或减)n天的方法。我们的Solaris 10系统没有日期的-d选项,甚至在/usr/xpg4/bin/date下也没有 我考虑了perl,在另一个线程上找到了几个示例,但系统不包括 use Time::ParseDate; use Time::CTime; 也不是 我们的系统受到严格的监管,所以我不能期望安装任何尚未安装的实用程序或库 欢迎提出任何其他建议。不太确定您想要什么 一些可能有帮助的例子: perl -e'$days=shift; print "".localt
use Time::ParseDate;
use Time::CTime;
也不是
我们的系统受到严格的监管,所以我不能期望安装任何尚未安装的实用程序或库
欢迎提出任何其他建议。不太确定您想要什么 一些可能有帮助的例子:
perl -e'$days=shift; print "".localtime(time + $days*24*3600)' 3 #in 3 days
Thu Apr 19 23:13:53 2018
perl -e'$days=shift; print "".localtime(time + $days*24*3600)' -- -7 #a week ago
Mon Apr 9 23:14:16 2018
chmod +x date_formatted.pl
cat date_formatted.pl
#!/usr/bin/perl
for(@ARGV){
my @lt=localtime( time() + $_*24*3600 );
printf "%04d-%02d-%02dT%02d:%02d:%02d\n",
$lt[5]+1900,
$lt[4]+1,
@lt[3,2,1,0];
}
./date_formatted.pl -2
2018-04-14T23:25:21
./date_formatted.pl 3
2018-04-19T23:25:21
./date_formatted.pl 0.5
2018-04-17T11:25:21
./date_formatted.pl -1 0 1
2018-04-15T23:25:21
2018-04-16T23:25:21
2018-04-17T23:25:21
如果允许,请安装
Date::Manip
并查看一下不确定您想要什么
一些可能有帮助的例子:
perl -e'$days=shift; print "".localtime(time + $days*24*3600)' 3 #in 3 days
Thu Apr 19 23:13:53 2018
perl -e'$days=shift; print "".localtime(time + $days*24*3600)' -- -7 #a week ago
Mon Apr 9 23:14:16 2018
chmod +x date_formatted.pl
cat date_formatted.pl
#!/usr/bin/perl
for(@ARGV){
my @lt=localtime( time() + $_*24*3600 );
printf "%04d-%02d-%02dT%02d:%02d:%02d\n",
$lt[5]+1900,
$lt[4]+1,
@lt[3,2,1,0];
}
./date_formatted.pl -2
2018-04-14T23:25:21
./date_formatted.pl 3
2018-04-19T23:25:21
./date_formatted.pl 0.5
2018-04-17T11:25:21
./date_formatted.pl -1 0 1
2018-04-15T23:25:21
2018-04-16T23:25:21
2018-04-17T23:25:21
如果允许,请安装
Date::Manip
,并查看自Perl v5.10以来Perl的Time::Piece
模块一直是核心发行版的一部分
您不需要说明日期的格式,但这将以YYYY-MM-DD
perl -MTime::Piece -E 'say((gmtime()+24*60*60)->ymd)'
输出
Perl的
Time::Piece
模块自PerlV5.10以来一直是核心发行版的一部分
您不需要说明日期的格式,但这将以YYYY-MM-DD
perl -MTime::Piece -E 'say((gmtime()+24*60*60)->ymd)'
输出
如果是的话,希望这能起作用。通过将循环变量乘以24*60*60*n,您可以使用for循环获得不同的天数
如果是的话,希望这能起作用。通过将循环变量乘以24*60*60*n,您可以使用for loop获得不同的日期。Time::Piece是一个核心的Perl模块。Solaris 10系统没有日期的-d选项,甚至在/usr/xpg4/bin/date下也没有。这是因为
-d
选项是对的非标准GNU扩展。@JimR,请显示一些输入和输出示例:您的意思是“今天减去n天”吗?或者某个任意日期?Time::Piece
是一个核心Perl模块,Solaris 10系统没有日期的-d选项,甚至在/usr/xpg4/bin/date下也没有。这是因为-d
选项是对的非标准GNU扩展。@JimR,请显示一些输入和输出示例:您的意思是“今天减去n天”吗?还是随便约会?没有乐趣。我们似乎有perl 5.8.4。perl-MTime::Piece'say((gmtime()+24*60*60)->ymd)'unrecogned开关:-E(-h将显示有效选项)。@JimR:这太荒谬了。那个版本已经有14年历史了!您拥有Time::Piece
的可能性很小,因此请尝试perl-MTime::Piece-e'print((gmtime()+24*60*60)->ymd,“\n”)”
否则您必须考虑安装一个私有副本。他们怎么能指望你使用一个“严格监管”的过时系统?@Borodin,“enterprise”@JimR,你应该能够使用它在你的主目录中安装更现代的perl版本。@glennjackman,正如我在最初的帖子中所说,“我们的系统受到严格的监管,因此我不能期望安装任何尚未安装的实用程序或库”没有乐趣。我们似乎有perl 5.8.4.perl-MTime::Piece-E“say((gmtime()+24*60*60)->ymd)”未识别的开关:-E(-h将显示有效选项)@JimR:那太荒谬了。这个版本已经有14年历史了!你很可能有Time::Piece
,所以试试perl-MTime::Piece-e'print((gmtime()+24*60*60)->ymd,“\n”)”
否则你就得考虑安装一个私有副本。他们怎么能指望你使用一个“严格监管”的系统呢“过时的系统?@Borodin,”enterprise“@JimR,您应该能够使用它在您的主目录中安装更现代的perl版本。@glennjackman,正如我在最初的帖子中所说,“我们的系统受到严格的监管,所以我不能期望安装任何尚未安装的实用程序或库”是的,这些都很好。第二个例子中-,的目的是什么?遗憾的是,由于我们受监管的环境,我无法安装任何东西。请在没有--
的情况下尝试,看看会发生什么<代码>--意味着选项的结束(至少在bash中,如果不是所有其他unix/gnu/linux shell,也可能是大多数)。如果没有这一点,-7
天将被视为perl本身的命令行选项,而不是我的小单行程序的负整数参数。第二个例子中-,的目的是什么?遗憾的是,由于我们受监管的环境,我无法安装任何东西。请在没有--
的情况下尝试,看看会发生什么<代码>--意味着选项的结束(至少在bash中,如果不是所有其他unix/gnu/linux shell,也可能是大多数)。如果没有这一点,-7
天将被视为perl本身的命令行选项,而不是我的小一行程序的负整数参数。
perl -e 'use strict;use warnings;use POSIX; my $date_folder_to_be_deleted=strftime "%Y-%m-%d",localtime(time() - 24*60*60); print "$date_folder_to_be_deleted"'