Simulator를 구현하다 보니 시간을 처리해야 할 일이 생긴다. 프로그램 진행 중에는 코드 시작 시각을 기준으로 얼마나 지났는지만 표현하면 되지만 프로그램이 종료 된 후의 결과는 사람에게 익숙한 형태여야 분석이 용이하다.

이번에 새롭게 시작하게 된 기업과제에서 반도체 공장의 Simulator를 제작해야해서 예전에 구현해 놓은 Simulator code를 오랜만에 열어 보았다. 그 때의 코드는 시간을 다음과 같은 코드를 이용해서 표현하고 있었다.


 
결과는 다음과 같이 출력된다. Sun Feb 20 12:00:00 KST 3916
연도, 월, 날짜, 시각 순인데, 여기서 월은 0부터 시작이다. 예제에서는 1이니까 2월인 것이다.


그런데 이 Date(year, monte, date ... ) 류의 생성자는 Deprecated로 Annotation이 되어있다. 그리고 권장되는 Date의 생성자는 Date() 또는 Date(long arg0) 이다. Date()로 Date의 instance를 생성하면 현재 시각에 해당하는 instance가 생성된다. 생성자가 long 형태로만 input을 받기 때문에 원하는 시각에 해당하는 instance를 생성하려면 'the milliseconds since January 1, 1970, 00:00:00 GMT' 즉 unix time으로 변환해주어 그 값을 input으로 사용할 수 밖에 없다. 


보다 더 직관적인 연도, 월, 날짜 등을 입력 받는 방식에서 이렇게 바뀌었는지 그 이유는 모르겠지만 급한 경우를 제외하고는 권장하는 방향으로 코딩을 할 생각이다.


+ Recent posts