홈>
<시간>
매 시간마다 매일 상을주는 기능을 만들려고합니다.
그러므로 DateTime에 몇 시간/일이 걸 렸는지 확인하는 함수를 구현하고 싶습니다.
매초마다 그 함수를 호출 할 코 루틴이 있습니다.
예를 들어 00:00:00, 01:00:00 ... 12:00:00 ... 23:00:00마다 상을 수여하고 싶습니다
<시간>예 :
DateTime date0 = new DateTime(2018, 8, 9, 20, 59, 59);
DateTime date1 = new DateTime(2018, 8, 9, 21, 0, 0);
int hoursPassed = (int) date1.Subtract(date0).TotalHours;
Debug.Log("Hours "+ hoursPassed);
<시간>
이 경우 hoursPassed는 0과 같습니다. 대신 1을 검색하는 함수 (이미 존재할 수 있음)를 만들고 싶습니다. 요일도 마찬가지입니다.
<시간>
예제 2
DateTime date0 = new DateTime(2018, 8, 9, 23, 59, 59);
DateTime date1 = new DateTime(2018, 8, 10, 00, 00, 00);
int DaysPassed = (int) date1.Subtract(date0).TotalDays;
Debug.Log("Days "+ DaysPassed);
<시간>
0을 검색하고 1을 검색하려고합니다.
<시간>여러 시간/일이 지났을 때도이 기능을 사용하고 싶습니다.
<시간>아무도 도와 줄 수 있나요?
감사합니다
- 답변 # 1
- 답변 # 2
잘 이해하면 :
private static int GetHours(DateTime date1, DateTime date2) { return Math.Max(0, Convert.ToInt32((date1 - date2).TotalMinutes / 60 + ((date1 - date2).TotalMinutes % 60 > 0 ? 1 : 0))); }
사용법 :
DateTime date0 = new DateTime(2018, 8, 9, 20, 59, 59); DateTime date1 = new DateTime(2018, 8, 9, 21, 0, 0); Console.Write(GetHours(date1, date0).ToString());
1을 반환
하루 이상 스패닝 :
DateTime date0 = new DateTime(2018, 8, 9, 20, 59, 59); DateTime date1 = new DateTime(2018, 8, 10, 21, 0, 0); Console.Write(GetHours(date1, date0).ToString());
25를 돌려 준다
- 답변 # 3
그것이
Math.Ceiling
인 것 같다 이 작업을 수행하는 가장 쉬운 방법입니다 :예 :
DateTime date0 = new DateTime(2018, 8, 9, 20, 59, 59); DateTime date1 = new DateTime(2018, 8, 9, 21, 0, 0); int hoursPassed = (int)Math.Ceiling(date1.Subtract(date0).TotalHours); Console.WriteLine("Hours " + hoursPassed);
예 2 :
DateTime date0 = new DateTime(2018, 8, 9, 23, 59, 59); DateTime date1 = new DateTime(2018, 8, 10, 00, 00, 00); int DaysPassed = (int)Math.Ceiling(date1.Subtract(date0).TotalDays); Console.WriteLine("Days "+ DaysPassed);
가장 쉬운 방법은잘라 내기
DateTime
를 만드는 것입니다 시간에만 관심이있는 경우 분/초를 제거하고 일에만 관심이있는 경우 시간/분/초를 트리밍하여 변수를 변경할 수 있습니다. 그런 다음 시간 또는 일의 차이를 계산하십시오.샘플 :
로컬 DateTime 대신 UTC DateTime을 일관되게 사용하는 경우 Dayligth 절약 시간 경계를 넘을 때만 작동합니다.