日付処理
Calendarを用いて日付処理をしています。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.Calendar;
//ログ出力の宣言
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int iYear=0;
int iMonth=0;
int iDay=0;
Calendar calendar = Calendar.getInstance();
iYear = calendar.get(Calendar.YEAR);
iMonth = calendar.get(Calendar.MONTH);
iDay = calendar.get(Calendar.DATE);
Log.d("yyyy/mm/dd", String.format("%1$04d/%2$02d/%3$02d", iYear, iMonth, iDay) );
//ex.)
//10-02 09:48:11.190 1335-1335/com.example.test.test6 D/yyyy/mm/dd: 2016/09/02
iYear = 2015;
iMonth = 1;
iDay = 1;
//2月の前月である2015/1/1を設定する
calendar.set(iYear, iMonth, iDay);
//月末を取得する
iDay=calendar.getActualMaximum(Calendar.DATE);
Log.d("2015年度2月末日", String.format("%1$02d",iDay) );
//ex.)
//10-02 09:48:11.190 1335-1335/com.example.test.test6 D/2015年度2月末日: 28
iYear = 2016;
iMonth = 1;
iDay = 1;
//閏年の前月である2016/1/1を設定する
calendar.set(iYear, iMonth, iDay);
//月末を取得する
iDay=calendar.getActualMaximum(Calendar.DATE);
Log.d("2016年度2月末日", String.format("%1$02d",iDay) );
//ex.)
//10-02 09:48:11.190 1335-1335/com.example.test.test6 D/2016年度2月末日: 29
String sWeek="";
//この時点では2016年度の閏年の年月日が設定されています
switch (calendar.get(Calendar.DAY_OF_WEEK))
{
case Calendar.SUNDAY:
sWeek = "日曜日";
break;
case Calendar.MONDAY:
sWeek = "月曜日";
break;
case Calendar.TUESDAY:
sWeek = "火曜日";
break;
case Calendar.WEDNESDAY:
sWeek = "水曜日";
break;
case Calendar.THURSDAY:
sWeek = "木曜日";
break;
case Calendar.FRIDAY:
sWeek = "金曜日";
break;
case Calendar.SATURDAY:
sWeek = "土曜日";
break;
}
Log.d("曜日", sWeek );
//ex.)
//10-02 09:48:11.190 1335-1335/com.example.test.test6 D/曜日: 月曜日
}
}
|
Calendar.getInstance()を使い初期化します。
各年月日を取得するには次のようにして取得します。
iYear = calendar.get(Calendar.YEAR);
iMonth = calendar.get(Calendar.MONTH);
iDay = calendar.get(Calendar.DATE);
setを用いると任意の日付に設定できます。
曜日はカレンダーオブジェクトから取得できます。
(例)
calendar.get(Calendar.DAY_OF_WEEK)
日曜日が始まりで「1」から始まり、土曜日の「7」で終わります。
他のプログラム言語では日曜日が「0」から始まるものもあるので
混同しないようにしてください。
指定月の末日を取得するには、次の実行をします。
月は0から始まりますので2月を知りたい場合は1を設定します。
getActualMaximum(Calendar.DATE);
日付を加算するには次のようにします。
2016/3/1に設定したうえで、次の実行をするものとします。
//1年を加算する
calendar.add(Calendar.YEAR,1);
ex.)2017/03/01
//1月を加算する
calendar.add(Calendar.MONTH,1);
ex.)2017/04/01
//1日を加算する
calendar.add(Calendar.DATE,1);
ex.)2017/04/02
日付を減算するには次のようにします。
//1年を減算する
calendar.add(Calendar.YEAR,-1);
ex.)2016/04/02
//1月を減算する
calendar.add(Calendar.MONTH,-1);
ex.)2016/03/02
//1日を減算する
calendar.add(Calendar.DATE,-1);
ex.)2016/03/01
|
ただし、2016/3/1の前日にしても
2016/2/31となってしまうので注意してください。
|
|