본문 바로가기

프로그래밍/안드로이드

[안드로이드] 날짜와 시간



날짜와 시간

에폭(Epoch) 타임 : 긴 정수로 표시되어 이 정보만으로는 날짜와 시간을 알아보기 어렵다.






public class ExerciseExam extends AppCompatActivity {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_excercise_exam);
Refresh();
}

public void mOnClick(View v) {
switch (v.getId()) {
case R.id.btnrefresh:
Refresh();
break;
}
}

void Refresh() {
StringBuilder time = new StringBuilder();

// 에폭(Epoch) 타임 구현

// 현재 날짜와 시간을 구하는 방법

// 현재 시간값을 "정수"로 리턴함. 1970년 1월 1일 자정을 기준으로 1/1000초 단위를 가짐.

// 단 하나의 값으로 일차원화해서 전달, 저장, 비교가 용이하다. (출력은 부적합)


long epoch = System.currentTimeMillis();

time.append("epoch = " + epoch + "\n");

//time.append("now = " + DateUtils.formatDateTime(this, epoch, 0)+ "\n");


--------------------- 출력값 epoch = 1470296370052 ----------------------




// 공인된 태양력을 표현한다. 요소를 지정하면 시간대, 지역 설정 전달이 가능하다.

// 디폴트 생성자를 호출하면 시스템 설정을 참조하여 현재 시간으로 초기화된다.



Calendar cal = new GregorianCalendar();
time.append("now = " + String.format("%d년 %d월 %d일 %d시 %d분\n",
cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH),
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE)));


---------------- 출력값 now = 2016년 8월 4일 7시 39분 -------------------


Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss"); //


time.append("now = " + sdf.format(now) + "\n");


------------------- 출력값 now = 2016.08.04 07:39:30 ---------------------

Calendar tom = new GregorianCalendar();
tom.add(Calendar.DAY_OF_MONTH, 1); // add 메서드가 내일 날짜를 구한다.
Date tomdate = tom.getTime();
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd");
time.append("tomorrow = " + sdf2.format(tomdate) + "\n");


--------------------- 출력값 tomorrow = 2016.08.05 -----------------------

time.append("boot = " + UpTime(SystemClock.elapsedRealtime())); // 부팅후 경과 시간

time.append("run = " + UpTime(SystemClock.uptimeMillis())); // 부팅후 경과 시간 (슬립 제외)
time.append("thread = " + UpTime(SystemClock.currentThreadTimeMillis())); // 현재 스레드에서

소비한 시간

TextView result = (TextView)findViewById(R.id.result);
result.setText(time.toString());
}

String UpTime(long msec) {
long sec = msec / 1000;
String result;
result = String.format("%d일 %d시 %d분 %d초\n", sec / 86400, sec / 3600 % 24,
sec / 60 % 60, sec % 60);
//result = DateUtils.formatElapsedTime(sec) + "\n";
return result;
}
}