2012-10-12 5 views

답변

3

자정이 항상 유효하지 않은 시간대에하지 않은 경우에, 당신이 뭔가를 할 수 있습니다 (사과 VB에서 구문이 약간 꺼져있는 경우) 다음을 가지고

Dim start = New DateTime(year, month, day, 0, 0, 0, DateTimeKind.Local) 
Dim end = start.AddMonths(1) 
Dim length = end.ToUniversalTime() - start.ToUniversalTime() 
Dim hours = length.TotalHours 

잠재적 인 문제는 DST 전환이 현지 시간 자정에 발생하는 브라질과 같은 경우입니다. 위의 내용은 모두 으로 시스템 로컬 시간대를 사용하려면을 사용한다고 가정합니다.

Noda Time, 당신은 다음, 적절한 LocalDate 가치를 창출 할 수있는 ZonedDateTimeat the start of the relevant day로 변환하고, 어떤 모호함없이, 차이를 그런 식으로 작동합니다. C# 예 :

var zone = ... // Whatever DateTimeZone you want... 
var start = new LocalDate(year, month, day); 
var end = start.PlusMonths(1); 
var startInstant = zone.AtStartOfDay(start).ToInstant(); 
var endInstant = zone.AtStartOfDay(end).ToInstant(); 
var duration = endInstant - startInstant; 
var hours = duration.Ticks/NodaConstants.TicksPerHour; 
관련 문제