首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从bash或perl中给定的日期开始的一个月前

从bash或perl中给定的日期开始的一个月前
EN

Stack Overflow用户
提问于 2013-11-01 03:03:49
回答 4查看 1.7K关注 0票数 1

我将从文件中读取随机日期,我想从该日期减去4个月。我是用Perl编程的,但我可以使用bash命令。

如果我有2013年10月14日,我将获得2013年6月14日。

非常感谢!

卡雷姆

EN

回答 4

Stack Overflow用户

发布于 2013-11-01 03:26:18

代码语言:javascript
复制
use DateTime::Format::Strptime qw( );

my $format = DateTime::Format::Strptime->new(
   pattern  => '%m/%d/%Y',
   on_error => 'croak',
);

my $dt = $format->parse_datetime('10/14/2013');
$dt->subtract( months => 4 );
say $format->format_datetime($dt);
票数 3
EN

Stack Overflow用户

发布于 2013-11-01 03:26:50

代码语言:javascript
复制
$ date '+%m/%d/%Y' --date='02/14/2013 4 month ago'
10/14/2012
票数 2
EN

Stack Overflow用户

发布于 2013-11-01 21:59:32

CPAN module Date::Manip非常适合这类事情。Date::Manip非常强大,因为它可以理解工作日和假日...并且可以解析任意的日期字符串,如“下周二”或“八月的第三个星期四”。

你应该试一试,我打赌你会发现它很有用。

下面是一个简短的示例,它可以解决您当前的问题:

代码语言:javascript
复制
#!/usr/bin/perl

use Date::Manip;

my $d = new Date::Manip::Date("10/18/2013");
print $d->printf("%c"), "\n";
my $delta = new Date::Manip::Delta("4 months ago");
my $od = $d->calc($delta);
print $od->printf("%c"), "\n";

...and这将生成以下输出:

代码语言:javascript
复制
Fri Oct 18 00:00:00 2013
Tue Jun 18 00:00:00 2013
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19714650

复制
相关文章

相似问题

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