[c#] 시간 계산하기 – TimeOnly
DateTime은 날짜와 시간을 모두 값으로 갖고 DateOnly는 날짜만 TimeOnly는 시간만 갖는다. 하루 안에서 시간들을 연산하려면 TimeOnly를 쓰는 게 편하다.
TimeOnly를 이용할 때 주의해야 할 게 있다. 아래 코드는 -00:00:01을 반환하지 않는다.
TimeOnly TimeOnly1 = new(9, 0, 0);
TimeOnly TimeOnly2 = new(8, 59, 59);
private void button1_Click(object sender, EventArgs e)
{
Text = (TimeOnly2 - TimeOnly1).ToString(); // 23:59:59
}
Because TimeOnly only represents a 24-hour period, it rolls over forwards or backwards appropriately when adding values supplied to those three methods.
How to use the DateOnly and TimeOnly structures
TimeOnly는 24시간으로만 작동하므로 이 범위를 넘어서면 그냥 넘겨 버린다는 뜻이다. 이걸 영어 동사로 wrap이라 한다.
위의 원리 때문에 작은 시간에서 큰 시간을 뺀 때 의도하지 않은 결과를 얻게 된다. 음수의 시간을 얻으려면 아래와 같이 TimeSpan으로 바꿔 계산해야 한다.
private void button2_Click(object sender, EventArgs e)
{
Text = (TimeOnly2.ToTimeSpan() - TimeOnly1.ToTimeSpan()).ToString(); // -00:00:01
}