Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl Unix时间+;Solaris上n天,不带日期-d选项_Perl_Date_Unix_Solaris - Fatal编程技术网

Perl Unix时间+;Solaris上n天,不带日期-d选项

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

我正在寻找返回日期加(或减)n天的方法。我们的Solaris 10系统没有日期的-d选项,甚至在/usr/xpg4/bin/date下也没有

我考虑了perl,在另一个线程上找到了几个示例,但系统不包括

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"'