Perl入門ゼミスマートフォン用の表示で見るPerl入門ゼミこの広告は、90日以上更新していないブログに表示しています。日付・時刻を汎用的に扱うPerl›モジュール›hereDateTimeを使用すると、日付と時刻を汎用的に扱うできます。これまでは、なんとか標準モジュールで日付を扱おうと記事を書いてきましたが、本当はあまりよくない方法です。日付と時刻というのは例外が多く自分でスクリプトを書くとバグが混入しやすいです。このモジュールは便利ですが、汎用的に日付を扱うために依存するモジュールの数が非常に多いです。日付の計算を早く行うために、一部はC言語で記述されています。このため、Windows環境でのインストールには少し準備が必要です。日付・時刻に関する一般的な情報は、以下を参考にしてください。DateTimeと打ってください。cpanを使用するのがはじめての場合は、cpanの設定の初期化の作業が必要です(たぶん)。何かたずねられたらEnterを押して進めてください(非常に長いです)。cpanの初期設定が終わっている場合は、ダウンロードできます。依存するモジュールをインストールしますかと何回も聞かれるので、ENTERを押して進めます。最後まで進めば終了です。5.10以降はPerlの標準モジュールとしてTime::Pieceを使えるので、Time::Pieceを使うのもよい方法でしょう。Time::Pieceによる時刻の扱いについては「「Time::Piece」で日付と時刻を扱う」をご覧ください。汎用的に日付を扱うには、DateTimeモジュールを利用します。47,);DateTimeモジュールはオブジェクト指向のモジュールです。メソッドでDateTimeオブジェクトを作成します。年と月はそのままの数を指定します。標準関数のlocaltime関数や標準モジュールのTime::Localのように、年を1900年からの年数で指定したり、月を0から始まる数値で指定したりする必要がありません。1年で何日目か、4半期で数えていくつ目かなどを取得できます。曜日は月曜日が1,日曜日が7になります。現在の日付と時刻を取得する現在時刻を表現するDateTimeオブジェクトを作成するにはnowメソッドを使用します。localを指定すれば、OSに設定されているはずである自分の国のタイムゾーンになります。'local');タイムゾーンを明示的に指定することもできます。タイムゾーンを明示的に指定するほうが、localを指定するより速度がやや遅いらしいです。明示的に指定すると移植性が損なわれます。引数を指定しなかった場合はUTC(協定世界時)になります。from_epochメソッドを使用します。指定しない場合は、UTC(協定世界時)になります。加えると、ローカル時刻を取得することができます。);タイムゾーンオブジェクトを作成するDateTimeはコンストラクタで、タイムゾーンを指定することができます。DateTime::TimeZoneオブジェクトを先に作成しておくと再利用することができます。'Asia/Tokyo');タイムゾーンオブジェクトの作成タイムゾーンオブジェクトを作成するには、newメソッドを使用します。タイムゾーン名を指定します。nowなど)で、タイムゾーンを指定した場合は、内部で自動的に、DateTime::TimeZoneオブジェクトが作成されます。'Asia/Tokyo');DateTimeオブジェクト作成するたびに、DateTime::TimeZoneオブジェクトが作成されることになります。これはコストになりますので、2回以上DateTimeオブジェクトを作成する場合は、最初にDateTime::TimeZoneオブジェクトを作っておくほうがよいです。作成したDateTime::TimeZoneオブジェクトを指定するだけです。$time_zone);タイムゾーンの一覧は「タイムゾーンの一覧」をご覧ください。日付の表現は国や地域によって表現が異なります。1月はアメリカではJanuaryと表現します。月曜日はMondayと表現します。国や地域ごとの表現のセットをロケールと呼びます。DateTimeモジュールは、さまざまな国や地域のロケールを指定することができます。'ja');日本のロケールは、jaになります。ロケールの指定nowメソッドで、現在の時間情報を持つDateTimeオブジェクトが作成されます。指定することができます。localを指定することで、ローカル時刻で時間情報が作成されます。下記の4つのメソッドがロケールに依存します。