값이 기본적으로 모호합니다. 두 시간 모두 번 두 번 시간이 2시에 돌아간 것으로 가정합니다.
는 당신이 이전 옵션으로 시작 시간을 처리 할 것인지 알고 있다면, 그리고 나중에 옵션과 종료 시간, 당신은 Noda Time를 사용할 수 있습니다
이상적인 세계에서는
using System;
using NodaTime;
using NodaTime.Text;
public class Test
{
static void Main(string[] args)
{
var pattern = LocalDateTimePattern.CreateWithInvariantInfo
("MMM dd, yyyy HH:mm:ss tt");
LocalDateTime start = pattern.Parse("Nov 06, 2011 01:59:58 AM").Value;
LocalDateTime end = pattern.Parse("Nov 06, 2011 01:00:00 AM").Value;
DateTimeZone zone = DateTimeZone.ForId("America/Chicago");
// Where this is ambiguous, pick the earlier option
ZonedDateTime zonedStart = zone.AtEarlier(start);
// Where this is ambiguous, pick the later option
ZonedDateTime zonedEnd = zone.AtLater(end);
Duration duration = zonedEnd.ToInstant() - zonedStart.ToInstant();
// Prints 00:00:02
Console.WriteLine(duration.ToTimeSpan());
}
}
, 그러나 모호한 현지 시간을 파싱 할 필요가 없으며 이전 또는 이후에있을 예정인지 여부를 추측 할 필요가 없습니다. 여기서 컨텍스트가 무엇입니까?
모두 가능한 경우 일 경우 현지 날짜/시간 대신 UTC 날짜/시간을 기록하도록 데이터 소스를 변경하십시오. 예를 들어 더 파싱하기 쉬운 형식으로 저장하는 것이 이상적입니다. yyyy-MM-ddTHH : mm : ss
먼저 유닉스 타임 스탬프로 변환 한 다음 계산하십시오. –
Noda time API를 확인하십시오. http://noda-time.blogspot.in/ –
시도 UTC로 변환, startDttm.ToUniversalTime(); end.ToUniversalTime(); 그런 다음 Subtract()를 시도하여 같은 결과를 얻습니다. – Vinoth