以前、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
Androidでカメラを扱うまとめです。
単純に撮った写真を保存するパターンと、パラメーターを指定して保存するパターン、
撮影した画像を圧縮して保存するパターンの3パターンを紹介します。
まずは、カメラを使用するために必要なパーミッションをAndroidManifest.xmlに記述します。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-feature android:name="android.hardware.camera.flash" />
撮影処理をするSurfaceViewを継承したクラスを作成します。
まず、簡単に保存するパターン 続きを読む…»
複数の配列から共通するキーや値を検索する関数をご紹介。
配列の共通項を計算する – array_intersect
書式
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
配列の共通する値のキーと値が配列で返されます。
キーと値の関係は、もとの配列の組み合わせが維持されます。
パラメータ
array1 //値を調べるもとの配列 array2 //値を比較する対象とする配列 array //さらに比較するそれ以外の配列
返り値
array1 の値のうち、 すべての引数に存在する値のものを含む連想配列を返します。
例)
<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
?>
出力結果
Array
(
[a] => green
[0] => red
)
キーを基準にして配列の共通項を計算する – array_intersect_key
続きを読む…»