반응형
DateTime과 TimeSpan 클래스에 대한 설명과
텍스트(string)으로 변환시 원하는 형식으로 표기하는 방법

 

우선 TimeSpan은 '시간'값 DateTime은 '시각'값을 가진다.

처음에 많이들 혼동하고 왜 다른 클래스로 관리를 하는지 의문을 가질때가 있다.

 

1.TimeSpan 클래스

TimeSpan은 어떤 A시각과 ~ B시각 사이의 시간혹은 '시간' 그 자체를 말함
예: 남은시간, 타임워치등
TimeSpan t = new TimeSpan(1, 30, 25); //일, 시, 분, 초, 밀리초 까지 입력가능

a.연산

일반적으로 *, /, -, + 모두다 가능하다

시간에 관련된 값은 대부분 Tick으로 저장하고있기에 따로 공부해보시길 추천한다.

 

2. DateTime 클래스

DateTime은 어떤 정해진 시간대, 날짜. 즉, "2024년 2월 15일" 과 같이 어떤 특정한 시간대를 저장한다.
예: 현재시간, 로그인 한 시각, 메시지를 보낸 시각, 약속날짜
//이렇게 특정 시간대를 입력한다
DateTime default_date = new DateTime(); //DateTime의 초기값은 "0001-01-01 00:00:00:00"

DateTime a = new DateTime(2024, 2, 15); //시,분,초를 입력하지 않았으므로 2024-2-15 00시00분00초

DateTime b = new DateTime(2024, 2, 15, 12, 30, 0); //2024-2-15 12시30분00초


DateTime now = DateTime.now; //현재 날짜, 시각을 알려준다
DateTime today = DateTime.today; //현재 날짜를 알려준다

a. 연산

DateTime(시각) + DateTime(시각)의 연산의 결과는 무조건 TimeSpan으로 반환된다.
2024-02-15 + 2024-04-01  = 2048-06-16 일이 되면 이상하지 않은가? 그래서 '시각'과 '시각'의 연산은 있을 수 없다.


아무튼 DateTime의 연산은 TimeSpan과 함께 해야한다.
        DateTime a = new DateTime(2024, 2, 15, 12, 0, 0);
        a.AddYears(1); //일년을 더함 => 2025-02-16 12시 00분 00초
        a.AddMonths(1); //한달을 더함 => 2025-03-16 12시 00분 00초
        a.AddDays(1); //1일을 더함 => 2025-03-16 12시 00분 00초
        a.AddHours(1); //1시간을 더함 => 2025-03-16 13시 00분 00초
        a.AddMinutes(10); //10분을 더함 => 2025-03-16 13시 10분 00초
        a.AddSeconds(125); //125초를 더함= 2분5초 이므로 => 2025-03-16 13시 12분 05초
        
        //뺄때도 역시 마찬가지로 Add~~ 를 사용
        a.AddYears(-1); //일년을 뺌
        a.AddMonths(-1); //한달을 뺌
        a.AddDays(-1); //1일을 뺌
        a.AddHours(-1); //1시간을 뺌
        a.AddMinutes(-10); //10분을 뺌
        a.AddSeconds(-125); //125초를 뺌
        DateTime a = new DateTime(2024, 2, 15, 12, 0, 0);
        TimeSpan span = new TimeSpan(10, 0, 0); //10시간
		a.Add(span); //2024-02-15, 22시 00분 00초가 저장
        
        
        //DateTime - DateTime = TimeSpan
        DateTime b = new DateTime(2024, 1, 1, 12, 0, 0);
        
        TimeSpan result = a - b; //

 

 

3. ToString 텍스트로 변환시 형식 (포맷Format) 지정

각 형식만 알고있으면 간단하다
y - 년
M - 월
d - 일
h - 시
m - 분
s - 초

yyyy-MM-dd hhmmss  "2024-02-15 124050" 이런식으로 저장될것이다

@"  " 이방식으로 포맷을 지정하면  \ (원표시) 뒤에 오는 것은 텍스트를 그대로 출력한다.
TimeSpan t = new TimeSpan(1,20,10);
string remainTime = a.ToString(@"hh\:mm\:ss");  //remainTime은 "01:20:10"가 저장될것

 

참고

 

[유니티] float to ToString() 소수점 자리 표시 / 콤마(,)표시

UI Text에 float을 String으로 표현해야 할 때 원하는 소수점 자리까지만 표현을 하고 싶을경우가 있다. 단순히 ToString() 함수에 'F' 포맷을 넣어주면 된다. float a = 1.234f; a.ToString("F1"); // 1.2 a.ToString("F2")

art-life.tistory.com

반응형

+ Recent posts