So-net無料ブログ作成
検索選択

日時 [PowerShell]

業務系の作業に関わるようになると、日時の情報を扱うことが増えるような気がする。以前は「西暦が 4 で割り切れたら閏年だけど、100 で割り切れたら平年、でも、 400 で割り切れたら...」なんて自分でやっていたけど、今ではライブラリが全て受け持ってくれる。

社会人になって時計が読めないなんて人は殆どいないだろうけど、希望する日時への変換となると結構勘違いしてしまうことがある。割とよく出てくる変換を紹介します。文法は PowerShell だけれど、.NET Framework であれば翻訳も難しくないと思う。System.DateTime 型の $cur を変換してみます。

  1. 当日の一番早い時刻
    $cur.Date
    まずは小手調べ。時刻の情報をクリアしてしまえば当日の午前 0 時 0 分 0 秒になる。
  2. 当日の一番遅い時刻
    $cur.AddDays(1).Date.AddTicks(-1)
    漢字 1 字違うだけだけど、意外に面倒。翌日の一番早い時刻を求めて、Tick(DateTime の最小単位)を引く。
  3. 今週の日曜日
    $cur.AddDays(-$cur.DayOfWeek).Date
    日曜日が 0、月曜日が 1 、、、となる DayOfWeek プロパティの特性を利用。状況によって Date プロパティは無くてもいい。
  4. 今月の 1 日
    $cur.AddDays(-$cur.day+1).Date
    前項とよく似た変換。
  5. 今月の末日
    $cur.AddDays(-$cur.day+1).Date.AddMonths(1).AddTicks(-1)
    ちょっと長いけど、結構素直でしょ。途中に置いた Date プロパティがカギ。

多少長いものもあるけど、みんな 1 行で変換できてしまう。面倒な計算はライブラリ内で実行されてるとは思うけど、PC がフリーズするほど負荷がかかるとは思えないので効率は気にしないことにする。

 


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL: