가끔씩 NSDate
에 추가 될 앱의 데이터베이스에 시간 간격을 저장해야합니다. 문제는, 어떤 데이터 유형을 선택해야할지 모르겠다. 어떤 사람들은 NSTimeInterval
을 저장할 것을 권유하지만, 사용자의 시간대가 바뀌면 계산 오류가 발생합니까? 어쩌면 NSDateComponents
("변환 가능"데이터 유형으로)을 저장하는 것이 더 좋을까요? 아니면 더 좋은 방법이 있을까요?코어 데이터에 시간 간격을 저장하는 올바른 방법은 무엇입니까?
답변
현재 날짜, 시간대 또는 일정에 상관없이 1 분은 60 초이고 1 시간은 3600 초입니다. 기간 "24 시간"을 저장하려면 24 * 3600 값으로 시간 간격으로 저장할 수 있습니다.
일부터 시작하여으로 시작하는 모든 큰 단위는 현재 날짜, 시간대 및 달력 에 따라 해석되어야합니다. 지속 시간 "하루"는 일광 절약 시간이있는 지역에서 23, 24 또는 25 시간이 될 수 있습니다. 특히 "24 시간"과 "1 일"의 의미는 다릅니다. 기간 "1 개월"은 그레고리오 어 캘린더에서 28 일에서 31 일까지, "1 년"은 365 일 또는 366 일이 될 수 있습니다. 다른 캘린더에는 다른 "특색"이있을 수 있습니다.
따라서 "day"이상의 모든 기간은 날짜 구성 요소로 에 저장해야합니다. NSDateComponents
으로 변환하는 방법도 있습니다. 또는 "durationDays", , "durationMonths"등의 여러 속성을 Core Data 엔티티에 추가 할 수 있습니다. 이렇게하면 값을 가져 오기 요청에서 참조하거나 설명자를 정렬 할 수 있습니다.
좋은 설명 주셔서 감사합니다. 나는 그것을 위해 여러 속성을 사용 하리라 생각한다. – Randex
다릅니다. 시간대 나 현재 날짜와 상관없이 10 초, 20 분 또는 3 시간 간격은 10 초, 20 * 60 초 또는 3 * 3600 초이며 NSTimeInterval로 저장할 수 있습니다. - "1 일"의 시간 간격은 23, 24 또는 25 시간이 될 수 있습니다. "1 개월"의 시간 간격은 28, 29, 30 또는 31 일 (그레고리력) 일 수 있습니다. –
@MartinR 그래, 그걸 잊어 버렸다. 내 애플 리케이션의 간격은 몇 분 또는 몇 달 수 있습니다 – Randex