首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找以DDMMYY格式生成昨天日期的Perl 5.12代码

寻找以DDMMYY格式生成昨天日期的Perl 5.12代码
EN

Stack Overflow用户
提问于 2011-11-01 02:50:42
回答 4查看 1.4K关注 0票数 3

我想要一种简单的方法来获取昨天的日期(本地时间)作为Perl脚本中的字符串。最好,我希望在没有模块依赖的情况下这样做,因为我们只安装了一个基本的Perl5.12。

所以,就像这样:

代码语言:javascript
复制
my $yesterdays_date=...; # Puts for example '301011' into $yesterdays_date, 
                         # if today is October 31st, 2011
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-01 02:57:51

Time::Piece是核心:

代码语言:javascript
复制
use Time::Piece;
use Time::Seconds qw(ONE_DAY);

my $yesterday = localtime() - ONE_DAY();
print $yesterday->strftime('%d%m%y'), "\n";

如果您关心夏令时,您可以将当前时间标准化为接近中午:

代码语言:javascript
复制
use Time::Piece;
use Time::Seconds qw(ONE_DAY ONE_HOUR);

my $today = localtime;
my $yesterday = $today + ONE_HOUR * ( 12 - $today->hour ) - ONE_DAY;
print $yesterday->strftime("%d%m%y"), "\n";

如果您可以忍受依赖,那么可以使用DateTime

代码语言:javascript
复制
use DateTime;

print DateTime->now->subtract(days => 1)->strftime('%d%m%y'), "\n";
票数 12
EN

Stack Overflow用户

发布于 2011-11-01 03:48:15

如果您愿意使用依赖项,DateTime通常会做您需要的任何事情。

代码语言:javascript
复制
use strict;
use warnings;
use 5.012;

use DateTime;

say DateTime->now->subtract(days => 1)->strftime('%d%m%y');
票数 12
EN

Stack Overflow用户

发布于 2011-11-01 03:01:00

只需从当前时间减去24小时(24小时* 60分钟* 60秒)即可得到localtime:

代码语言:javascript
复制
say scalar localtime(time - 60*60*24);
# Sun Oct 30 21:04:30 2011

请注意,localtime仅在标量上下文中以字符串格式返回时间。如果你需要生成'DDMMYY‘,你可以使用list context返回的数据结构:

代码语言:javascript
复制
my @tm = localtime(time - 60*60*24);
my $date = sprintf("%02d%02d%2d", $tm[3], $tm[4]+1, $tm[5] + 1900);
# 30102011
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7958231

复制
相关文章

相似问题

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