これは非常にシンプルになると思っていましたが、今は本当にオプションがありません。私は与えられた時間から15分を減算したい。Substract Perlを使用している時間から15分
例 私の時間は、私は14時49分であることを15分を減算する必要15時04分です。私はインターネット上でソリューションを探しましたが、私を助けることができるperlモジュールはありません。
これは非常にシンプルになると思っていましたが、今は本当にオプションがありません。私は与えられた時間から15分を減算したい。Substract Perlを使用している時間から15分
例 私の時間は、私は14時49分であることを15分を減算する必要15時04分です。私はインターネット上でソリューションを探しましたが、私を助けることができるperlモジュールはありません。
$unixtime = time();
をあなたは
DateTime
を使用することができます
:
my $dt = DateTime->new(
year => 1,
month => 1,
day => 1,
hour => 15,
minute => 4,
);
$dt->subtract(minutes => 15);
printf "%d:%d\n", $dt->hour, $dt->minute; # prints 14:49
たとえば、UNIX時間に現在の時間の時間を変換Date::Calc
use Date::Calc qw(Add_Delta_DHMS);
($year2, $month2, $day2, $h2, $m2, $s2) =
Add_Delta_DHMS($year, $month, $day, $hour, $minute, $second, $days_offset, $hour_offset, $minute_offset, $second_offset);
($y,$m,$d,$H,$M,$S) = Add_Delta_DHMS(Today_and_Now(), 0, 0, -15, 0);
を使用してみてください。そして、
sub display_time {
my ($sec,$min,$hour,$mday,$mon,$year,undef,undef,undef) = localtime(time);
$year += 1900;
$mon += 1;
return "$year.".sprintf("%02d.%02d %02d:%02d:%02d",$mon,$mday,$hour,$min,$sec);
}
perl -MClass::Date -e 'my $d=Class::Date->new("2011-07-13 15:04:00"); my $d2 = $d-"15m"; print $d2, "\n";'
出力:
2011-07-13 14時49分00秒
まあそれはすべてのあなたの時間が保存されている方法によって異なります。私は内蔵のtime
で返されるtime_t
を使用することを好む。
my $now = time();
my $before1 = $now - (15*60); # 15 minutes ago
my $before2 = $now - (3*60*60); # 3 hours ago
my $before3 = $now - (2*24*60*60); # 2 days ago
出力のために、私はPOSIX
モジュールを使用
print POSIX::strftime('%Y-%m-%d %T', localtime($before1));
すべての日に24時間があるわけではありません。 – ikegami
あなただけの時間を懸念している場合は、以下のサブ・ルーチンを使用することができますない日付:
sub subTime{
my ($time) = @_;
my @splittime = split(':', $time);
my $hour = $splittime[0];
my $min = $splittime[1];
if($min < 15){
$min=($min+60)-15;
$hour-=1;
}
else{
$min = $min-15;
}
return "$hour:$min";
}
Disclamer:これはOPが使用された解決策でしたが、彼は上記回答のコメント(@ eugeneの回答)に言及しました。
彼は時間ではなく日付についてだけ心配だ場合、彼は[時刻::時計]を試すことができます(http://search.cpan.org/perldoc?Time::Clock) – mpeters
私は上記の私を解決しただろうと思い問題は、以下のものは私が望む形式を使用していないが、私は多くを学ぶのを助けた。私は@_ =それを サブsubTime { \t私の($時間)、次のように答えることができました。 \t私の@splittime = split( ':'、$ time); \t my $ hour = $ splittime [0]; \t my $ min = $ splittime [1]; \t IF($分<15){ \t $分=($分+ 60)-15。 \t $時間= 1; \t}他{ \t \t $分= $分、15; \t} \t返信 "$ hour:$ min"; \t } 私は、この関数とその返された引き算の時間を呼び出します。ありがとう –
と文字列 - > 'DateTime'のためのhttps://stackoverflow.com/questions/7486470/how-to-parse-a-string-into-a-datetime-object-in-perlを参照してください。 –