DateTime 3

알람 기능 제작기 (1)

캐릭터와의 교류를 폭넓게 구현하고 지원하는 게임이 많아지고 있다. 더 나아가 하나의 게임을 즐기는 방법이 되기도 한다. 물론 나도 질 수 없다. 플레이어가 알람을 해주길 원하는 캐릭터와 알람 시간대를 설정하면 해당 시간에 맞게 알람이 울리는 기능을 제작해 본다. 1. 시간 버튼을 눌러 원하는 시간을 설정하도록 한다.2. 오전/오후 버튼을 눌러 반나절을 계산한다.3. 스크롤바로 몇분인지를 설정하도록 한다.4. 시간 계산을 눌러 알람 시간을 확정한다. public class ManageTime{ private DateTime setAlarmTime; public string dayAndNight; public int hour24; public int year; public int..

[DateTime] DateTime의 불변성과 대입 연산자

DateTime 구조체는 한 번 생성되면 내부의 값을 수정할 수 없다. 즉, DateTime을 이용하면 그 값의 복사본을 사용하게 된다. DateTime 내 AddDays(), AddHours()는 값을 직접 수정하는 게 아니라 새로운 객체를 생성하여 반환한다.alarmTime.SetAlarmTime = alarmTime.SetAlarmTime.AddDays(1);그래서 DateTime의 메서드를 이용하려면 대입 연산자로 값을 지정해주어야 한다. alarmTime.SetAlarmTime.AddDays(1);대입 연산자 없이 메서드만 호출한다면 계산은 진행되지만 값을 저장하지는 않는다. 그리고, 구조체는 값 타입이기 때문에 전달될 때마다 메모리에서 복사가 일어난다. 함수에 전달될 때 복사본이 전달되므로 원..

언어/C# 2026.02.23

ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.

푸시 알림을 구현하는 데에 DateTime을 사용하고 있다. 그러나 위의 오류가 뜬다.오류를 있는 그대로 살펴보자면 각 DateTime 값이 지정된 범위를 초과했다는 뜻이다. 예를 들면 13월, 32일 같은 범위 오차인 것이다. (각 연도의 윤일 유무를 조심해야 할 필요가 있다.)나의 경우에는 너무 기초적인 실수 때문이었다. 파라미터 값을 DateTime(int day, int hour, int minute)로 착각하고 쓴 것이다! 아래 오버로드에는 그 어디에도 그런 게 없다. 왜 그랬지? public DateTime(long ticks); public DateTime(long ticks, DateTimeKind kind); public DateTime(int ye..

Unity/버그 잡기 2026.01.06