あなたのソースコードが間違っています。$
記号が変数名の前に欠けています。
モジュールTime::Localからの呼び出しは、1900年から1900年までの入力を入力として受け取り、2016年を渡します。最後に、この日付をlocaltime
に戻します。これはまったく逆の機能です。
この試してみてください:あなたが得る
print time;
print join(" ",localtime(time));
1461783061
1 51 20 27 3 116 3 117 1
を:
- 2分目51
- 時間20
- の日である27
- ゼロベースヶ月3をApril
ある
- 1900ベースの年間116 2016
localtime
の私のデフォルトの使用量は次のとおりです。
my @now = localtime(time);
# Convert zero-based-month to calendar month
++$now[4];
# Convert 1900-based-year to calendar year
$now[5] += 1900;
あなたが必要とするすべての日付の計算がある場合は、Date::Calc
use Date::Calc qw(Today Add_Delta_Days);
print join '-', Today();
print join '-', Add_Delta_Days(Today(),1);
2016-4-27
2016-4-28
またはDateTimeを試してください。
use DateTime;
print DateTime->now->add(days => 1, seconds => 180);
2016-04-28T19:00:12
DateTime
のstrftime
メソッドまたはformatter
オプションを使用すると、任意の出力が得られます。
これは正しいです。私は 'strf'関数が何であるかはわかりませんが、それは年が2016年に変換される場所を探しているかどうかを調べる場所です。 – mob
こんにちは、関数はstrftimeです。しかし、この関数を使用しないと、116年として表示されるはずですか?しかし、それは2016だけを表示していました。 – ball123
あなたが示した内容は、有効なPerlコードではありません。使用している実際のコードを表示してください。また、 'seconds = 180 +(60 * 24 * 60);は180日ではなく1日180秒です。 – ThisSuitIsBlackNot