PerlでYYYY-mm-dd HH:MM:SSを高速に取得する
2023-09-16 12:40:55
質問
Perl スクリプトを書くとき、次のような形式の文字列で表される現在時刻を取得する必要性にしばしば気づきます。
YYYY-mm-dd HH:MM:SS
(例えば
2009-11-29 14:28:29
).
こうすることで、私は自分自身がこのかなり面倒な道を歩んでいることに気づきます。
-
man perlfunc
-
/localtime
でlocaltimeを検索する - 5回繰り返す (/
+\n
) で、manpage の関連セクションに移動します。 -
文字列をコピーする
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
を私のスクリプトにコピーしてください。 -
で試してみてください。
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon, $mday, $hour, $min, $sec);
- 注意点その1:現在の年を得るためには、$yearに1900を加えなければならない。
-
で試してみてください。
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon, $mday, $hour, $min, $sec);
- 注意点その2:当月を得るには$monに1を足す必要があります。
-
で試してみてください。
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec);
- 大丈夫そうですね。Done!
上記のプロセスは機能しますが、最適とは程遠いものです。もっとスマートな方法があると思うので、私の質問は単純です。
を取得する最も簡単な方法は何ですか?
YYYY-mm-dd HH:MM:SS
を得る最も簡単な方法は何ですか?
ここで "easy" は "easy-to-write" と "easy-to-remember" の両方を包含しています。
どのように解くのですか?
使用方法
strftime
を標準の
POSIX
モジュールで使用されます。の引数は
strftime
の戻り値と一致するように設計されています。
localtime
と
gmtime
. 比較する
strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1)
で
my ($sec,$min,$hour,$mday,$mon,$year,$wday, $yday, $isdst) = gmtime(time);
コマンドラインでの使用例は
$ perl -MPOSIX -le 'print strftime "%F %T", localtime $^T'
のようにソースファイルから、あるいは
use POSIX;
print strftime "%F %T", localtime time;
システムによっては
%F
と
%T
という短縮形があるため、明示的に
print strftime "%Y-%m-%d %H:%M:%S", localtime time;
または
print strftime "%Y-%m-%d %H:%M:%S", gmtime time;
なお
time
は現在時刻を返すのに対し
$^T
はプログラムが開始された時刻に固定される。とは
gmtime
で、返り値は GMT での現在時刻となる。ローカルタイムゾーンの時刻を取得するには
localtime
.
関連
-
[解決済み] JavaScript の日付を yyyy-mm-dd でフォーマットする。
-
[解決済み] Perlからロケール設定の警告を修正する方法
-
[解決済み] Pythonで今日の日付をYYYY-MM-DDで取得する?
-
[解決済み] 最近のPerlはなぜデフォルトでUTF-8を避けるのですか?
-
[解決済み] moment.js で datetime を YYYY-MM-DD HH:mm:ss にフォーマットする
-
[解決済み] Perl のフラグ -pe, -pi, -p, -w, -d, -i, -t?
-
[解決済み] Perlのprintがデフォルトで改行を追加するには?
-
[解決済み] unixで任意のスクリプトをデーモン化するには?
-
[解決済み] cpan`経由でインストールしたPerlモジュールをデインストールするにはどうすればよいですか?
-
[解決済み] perlの<<'m'=~m>>構文は何を意味するのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Perlでファイルが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Perl のフラグ -pe, -pi, -p, -w, -d, -i, -t?
-
[解決済み] Perlのハッシュのキーを反復処理する最も安全な方法は何ですか?
-
[解決済み] なぜstrictとwarningを使うのか?
-
[解決済み] Perlで文字列が空かどうかをチェックする適切な方法は何ですか?
-
[解決済み] Perlのprintがデフォルトで改行を追加するには?
-
[解決済み] Perlで "my "キーワードはどのように使うべきですか?
-
[解決済み] 非 root ユーザーで CPAN を使用するにはどうすればよいですか?
-
[解決済み] Perlでミリ秒単位でスリープさせるには?
-
[解決済み] Perlによる多行検索置換