PerlのDate::Manipモジュールを利用し、日付の計算を行う:UNIX処方箋
現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、自作スクリプト内で日付を取り扱う場合などに重宝するPerlのDate::Manipモジュールを紹介します。
自作スクリプト内で日付を取り扱う必要があるのですが、日付の計算を簡単に行う方法はありませんか?
幾つか方法が考えられますが、ここではPerlのDate::Manipモジュールを利用する方法を紹介します。このモジュールは非常に高機能で、さまざまな用途で役立ちます。
まずは利用中のシステムに、Date::Manipモジュールをインストールします。CPANモジュールを利用すると簡単です。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
導入できたら、実際に使ってみましょう。ここでは、応用しやすいようにワンライナー形式で記述します。
現在の日付
日付を指定する際に、文字列で指定できます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
任意の日付
文字列のバリエーションとして、もう少し複雑な指定ができます。以下に幾つか示しておきます。OS、あるいはスクリプト言語の標準的な機能だけでは手間が掛かる計算もDate::Manipモジュールであれば直感的に導き出せます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ビジネスデーの算出
業務の中では「翌営業日」という指定を良く使うと思いますが、Date::Manipモジュールはこの算出にも対応しています(土日が休日と仮定)。以下は月曜日に実行した例で、前日(yesterday)は日曜日なので「0」、翌日(tomorrow)は火曜日なので「1」となります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
2006年7月8日は、1月1日から数えて何日目か
1月1日から任意の日付までの日数を算出します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
2006年から2008年までの海の日リスト
海の日、つまり7月(7)第3週(3)の月曜日(1)に対応する日付を、3年間分出力します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このほか、日付文字列のフォーマット変換、独自のイベント/祝日設定、あるいは言語の変換(フランス語で出力など)といった多彩な機能があります。
UNIX関連の悩みなら、「UNIX処方箋」にどうぞ
関連記事
- Solarisのrtcコマンドとは?
- Solaris用SCSIカードのSCSIイニシエータIDを変更する
- BINDで連番レコードを生成する
- AIXを管理する上でのポイント
- Solaris 9で、Qpopperのログ出力先を指定する
- sudoコマンドを利用し、一般ユーザーにroot権限を部分的に与える
- SolairsでISOイメージをマウントする
- Solarisのリリース番号とは?
- Solaris 10の最小特権機能の利用方法
- RAID 1の再同期の速度を速くする
- Solaris 9上で、TCPを用いて接続記録やアクセス制御を行う
- Solarisマシンにおける/tmpのファイルシステム
- Solaris 9におけるCDの自動マウント
- Basic認証を用いたアクセス制御
- quotaコマンドでファイルシステムの容量制限を行う
- 電源投入時にdiagが実行される設定の解除(ALOMの設定)
- mdbコマンドでSCSIのTagged Command Queueing設定を確認
- tarアーカイブ内から、特定キーワードを含むファイルを指定してリストアする
- /etc/systemファイルの編集に失敗してマシンが起動しない場合の対処法
- Perlを用いた自動FTP転送
- iノード数の変更方法
- Solaris 8以前と9以降のログローテーション設定の違い
- HTTPSサーバを構築する
- SolarisからIPv6ルーターのようにRAを配信する
- Solstice Backup 7.1によるディスクバックアップ
- シェルスクリプトによる特定ファイルのバックアップ
- 9個以上のディスクスライス作成
- bashが起動時に実行するファイル
- acctcomコマンドによる終了ステータスの確認
- 電源制御キーの役割と無効化
- 「load average」によるCPU負荷の確認
- FTP利用でのファイル/ディレクトリの属性変更
- UFS loggingによるエラーと復旧方法
- ALOMにおけるSC用ユーザーの確認とパスワード変更
- PostgreSQLのテーブルデータをファイルへコピーする方法
- sotrussやapptraceによる実行コマンドのトレース
- TCP遅延肯定応答タイマーのタイムアウト値の変更
- 複数のマシンで効率的にシャットダウンする方法
- WWW::MechanizeモジュールによるWebアクセスの自動化
- IPv6アドレスの自動生成による不具合解消法
- キャッシュファイルを利用したNFSマウント
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.