2011-04-14 2 views
2

시간 (클라이언트에게 너무 로컬)에 기반하여 특정 작업을 수행해야하는 응용 프로그램의 요구 사항이 있습니다 ... 예를 들어 - 클라이언트가 미국에 있고 클라이언트의 로컬 시간이 20:00이면 아무 것도하지 마십시오 ...datetime이 20:00 * local * time과 같은지 확인하는 방법

지금까지 간단히하기 위해 각 국가마다 하나의 시간대 만 사용했습니다. 시간은 시간대에 따라 클라이언트에서 20:00입니까 ??

+1

명시 적으로 시간을 확인하는 대신 20:00에 시작되는 타이머를 설정하려는 것처럼 들립니다. 그렇지 않으면 계속해서 계속 점검해야합니다. –

+0

+1 제안 타이머입니다. 유일한 것은 선택할 수있는 타이머가 몇 가지 있습니다 ... – GregC

+0

우리는 이미 예약 된 작업을 가지고 있습니다 .. Jon Skeet이 제공 한 C# 코드를 찾고있었습니다. – sajoshi

답변

3

.NET 3.5 이상을 사용한다고 가정하면 클라이언트에 대해 TimeZoneInfo이 필요합니다. 그럼 당신은 사용할 수 있습니다

DateTimeOffset clientNow = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, 
                timeZone); 

if (clientNow.TimeOfDay == TimeSpan.FromHours(20)) 
{ 
    // ... 
} 

(물론, 그에만 정확한 인스턴트 20:00에서 일하는 것이 당신은 당신의 실제 요구 사항에 따라이를 조정할 수 있습니다.).

2
boolean isDateTimeEqualToTwentyAught() { 
    return false; 
} 
1

DateTime 클래스에는이 시간대를 완전히 무시한 다른 시간대의 값을 비교할 수있는 버그, 오류가 있습니다. 시험, 테스트 및 재시험을 통해 원하는대로 할 수 있습니다.

3

대신 quartz.net을 사용하여 작업을 예약하십시오. 그것은 매우 안정적이기 때문에 작업하기가 매우 쉽습니다.

시간대 제한 사항이 필요하면 매 시간마다 작업을 실행하고 적용되는 클라이언트에 대해 원하는 작업을 실행하십시오.

관련 문제