2014年1月25日土曜日

東芝dynabook tab VT484で、曜日取得のコマンドを作ってみる

毎日持ち歩いている「東芝dynabook tab VT484」ですが、ちょっと必要があって、「指定した日付の曜日を取得するコマンド」をWindows Power Shell用に作ってみました。


Windows 8.1のモバイル機は良いもんですねー。
必要ある処理が出てきたら、アプリ開発っとか大げさな事を言わなくても大丈夫。
コマンドモード(Windows PowerShell)でもって、その場でもパパっと作る事が出来て、作ったマシンでそのまま使えてしまう身軽さは、しみるくらいありがたい。


参考までに
PowerShellを使えるように設定する記事はこちらです
■どういうコマンドかというと

WEEK 日付(yyyyMMddか、yyyy-MM-dd形式か、yyyy/MM/dd形式)

って入力するだけでその日付の曜日が表示されるだけのものです。

念のためパラメータ0だと当日の曜日を表示するようにしてあります。


#曜日の取得
FUNCTION GLOBAL:WEEK($P_VALUE=-1)
{
   $oRX1 = $(NEW-OBJECT Regex("^[0-9]{4}(\/|\-)[0-9]{2}(\/|\-)[0-9]{2}$"));
   $oRX2 = $(NEW-OBJECT Regex("^[0-9]{8}$"));
   [String]$sVALUE = "";
   if($oRX1.IsMatch($P_VALUE))
   {
      $sVALUE = [String]$P_VALUE;
   }
   elseif($oRX2.IsMatch($P_VALUE))
   {
      $sVALUE = [String]$P_VALUE;
      $sVALUE = $sVALUE.SubString(0,4) + "/" + $sVALUE.SubString(4,2) + "/" + $sVALUE.SubString(6,2);
   }
   elseif($P_VALUE.Equals(0))
   {  #当日
      $sVALUE = $([DateTime]::Now).ToString("yyyy/MM/dd");
   }
   else
   {
      WRITE-OUTPUT "パラメータはyyyyMMddか、yyyy/MM/ddか、yyyy-MM-ddでお願いします。";
      RETURN; #強制終了
   }
   #日付区切りは-と/が混在しててもokのように作ってます
   [char[]]$aC = $(NEW-OBJECT char[] 2);
   $aC[0] = "-";
   $aC[1] = "/";
   $aDATE = $sVALUE.Split($aC);
   $oDATE = $(NEW-OBJECT DateTime($aDATE[0],$aDATE[1],$aDATE[2]));
   $iWEEK = [Int16]$oDATE.DayOfWeek.ToString("d");
   RETURN WEEKNAME $iWEEK; #自作関数で曜日数字を曜日名に変換します。
}

FUNCTION GLOBAL:WEEKNAME($P_VALUE="")
{
   $sRES = "";
   switch($P_VALUE)
   {
      "0"  {$sRES = "日"; }
      "1"  {$sRES = "月"; }
      "2"  {$sRES = "火"; }
      "3"  {$sRES = "水"; }
      "4"  {$sRES = "木"; }
      "5"  {$sRES = "金"; }
      "6"  {$sRES = "土"; }
      "99" {$sRES = "ALL";}
      "日" {$sRES = "0";  }
      "月" {$sRES = "1";  }
      "火" {$sRES = "2";  }
      "水" {$sRES = "3";  }
      "木" {$sRES = "4";  }
      "金" {$sRES = "5";  }
      "土" {$sRES = "6";  }
      "ALL"{$sRES = "99"; }
      
      default{$sRES="?"; }
    }
    RETURN $sRES;
}
曜日の数字から名前を変換するWEEKNAME()関数ですが、今回のコマンドでは使わない内容もswitchで列挙していますが、これは他のコマンドでも利用したかったからです。

そういや、if文やwhile文などはC#言語と大変似ているPowerShellですが、switch文は文法が結構違ってて面白いですね。


たとえば、PS4の発売日(2014年2月22日)って何曜日だっけ??
というような時は

WEEK 20140222

WEEK 2014-02-22

WEEK 2014/02/22

のどれかで土と表示されます。

モバイル機といいますが、こうやって小さくとも何かをパチパチ作るのって、この上なく楽しくて良いですねー。