カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

日本的日付の加算・減算

以前、PHPでの日付の加算・減算についてご紹介しました。
その時の記事はこちら↓
日付の加算・減算 DateTimeクラス

その際、月の加減については31日が加減されると記載しました。

例えば12月31日に2ヶ月を加算した場合は、翌年の3月3日になります。

今回はそのような事態にならない回避方法をご紹介します。

// 基準とする日付のオブジェクトを生成する
$myDate = new DateTime("2018-12-31");

// 新規日付オブジェクトを生成
$newDate = new DateTime();

// 2ヶ月後の末日を取得
$newDate->setDate($myDate->format("Y"), $myDate->format("n") + 2 + 1, 0);

※日付に「0」を指定することで前月の末日を取得することができます。
3ヶ月前の末日を取得する

// 2ヶ月を加算する
$myDate->add(new DateInterval("P2M"));

echo $myDate->format("Y-m-d")."\n";

echo $newDate->format("Y-m-d")."\n";

ここでの出力結果

2019-03-03
2019-02-28
// 基準日オブジェクトと2ヶ月後末日との差を求める
$result = $myDate->diff($newDate);

//$resultには日付の間隔を表すDateIntervalオブジェクトが返されます。

if($result->invert == 1) { //間隔が負の数になっている場合は 1、そうでない場合は 0

    echo "newDate\n";
    echo $newDate->format("Y-m-d");

} else {

    echo "myDate\n";
    echo $myDate->format("Y-m-d");

}

出力結果は以下のようになります。

newDate
2019-02-28
1,238 views

日付表示をyy/mm/ddにしたいのにできない

日付表示をyy/mm/ddにする設定方法

[設定]-[日付と時刻]-[地域]の地域設定データのところで「データ形式を変更する」をクリックし、
「日付(短い形式)」のところをyy/mm/dd形式に変更します。

通常は上記設定でパソコンの日付表示はyy/mm/dd形式に変更されるはずです。
しかし、Outlookを開くとこの設定が元に戻されるという現象が発生しています。

そのような現象が発生するのは以下のような環境
Windows 10 Pro
Microsoft Office 2013, 2016

以下のようなレジストリファイルを作成し、ダブルクリックすれば短い形式の
設定をレジストリに書き込んでくれます。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\International]
"sShortDate"="yy/MM/dd"

しかし、Outlookを起動するとまた元の設定に戻ってしまうので
その度に実行する必要がありとても面倒です。
そこで次のような対処方法を発見しました。

対処方法(解決方法ではない)

タスクバーの検索窓に「gpedit.msc」と入力し、Enterを押します。
「ローカルグループポリシーエディター」が表示されます。
[コンピュータの構成]-[管理用テンプレート]-[システム]-[ロケールサービス]を開きます。
その中にある「ユーザーオーバーライドによるロケール設定を禁止する」をダブルクリックして
設定画面を開き、未構成・有効・無効の選択肢を有効に設定します。

これによりOutlookを起動しても、元の設定に戻ることはありません。
ただし逆に、設定でyyyy/mm/ddにしようとしてもその変更は反映されなくなります。

10,565 views

ナビゲーションウィンドウを非表示にする

ACCESSにて、コードでリンクテーブルを設定した時など、非表示にしていたナビゲーションウィンドウが表示されてしまうことがあります。
以下のコードを実行するとナビゲーションウィンドウを再び非表示にすることができます。

DoCmd.NavigateTo "acNavigationCategoryObjectType", ""
DoCmd.RunCommand acCmdWindowHide

また、逆に表示したいときは以下のようにします。

DoCmd.NavigateTo "acNavigationCategoryObjectType", ""
DoCmd.RunCommand acCmdWindowShow
6,237 views

iOS12.3.1でイベントdeviceorientationが動作しない

iOS 12.3.1のSafariでは、デフォルトでセンサーの値が取得できなくなったようです。

window.addEventListener("deviceorientation", function(event){}, true);

上記イベントがキャッチできません。

iOS 12.1では動作することを実機で確認しました。

対応策としては[設定]-[Safari]-[モーションと画面の向きのアクセス]をONにすると
キャッチできるようになりますが、一般ユーザーにこの設定を変えてもらうわけにはいきませんよね;
他に何か有用な情報を発見したら追記したいと思います。

1,315 views

令和対応について Windows 10

元号が『令和』に変わりましたね。
知人の不動産業者さんから、Excelで令和表示に対応したいけど、どうすればいいの?
と質問がありましたので、こちらでもその方法をご紹介したいと思います。

例としてExcelでA1のセルに「=TODAY()」と入力して本日の日付を表示させてみましょう。
すると以下のように『平成』で表示されてしまいます。

これを自動で『令和』なるようにしましょう。

スタート(Windowsマーク)から設定をクリックします。

続きを読む…»

822 views