2

Quartz.NET (http://quartznet.sourceforge.net/)을 사용하고 있으며 자정에 시작 날짜를 설정하려고합니다. 하지만이 날짜를 만드는 데 문제가 있습니다. 이 응용 프로그램은 다른 시간대의 다른 서버에 있습니다. 그러나 나는이 시간을 태평양 표준시 (Pacific Standard Time)에서 항상 자정으로 정하고 싶습니다.태평양 표준시로 자정으로 설정된 DateTimeOffset을 만드는 방법

TimeZoneInfo info = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");  
    DateBuilder dateBuilder = DateBuilder.NewDateInTimeZone(info).AtHourMinuteAndSecond(0,0,0);   
    DateTimeOffset runTime = dateBuilder.Build();   

    IJobDetail job = JobBuilder.Create<TimeJob>() 
     .WithIdentity("job1", "group1") 
     .Build(); 

    ITrigger trigger = TriggerBuilder.Create() 
     .WithIdentity("trigger1", "group1") 
     .StartAt(runTime) 
     .WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever()) 
     .Build(); 

나는 자정 태평양 표준 시간 것을 DateTimeOffset 형식으로 날짜를해야합니다

여기 내 작동하지 않는 코드입니다. MVC 3을 사용하고 있습니다. 도움이 많이되었습니다!

답변

5

이렇게하면 서버에 관계없이 자정 PST 날짜가 부여됩니다.

DateTime dateInDestinationTimeZone = System.TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, System.TimeZoneInfo.Utc.Id, "Pacific Standard Time").Date; 
+0

DST 중에 실행하면 어떻게됩니까? –

+1

우리는 UTC로 작업 중이므로 DST (Day Light Savings Time)가 자동으로 계산됩니다. –

3

죄송 죽은이 부활합니다,하지만 난 @Vishnu가 제공하는 솔루션은 나를 위해 작동하지 않았다 발견했다.

EST 컴퓨터에서 작업하고 있으며 생성 된 개체의 결과는 현지 시간으로 자정이었습니다. 또한 언급 된 솔루션은 DateTimeOffset 개체를 만들지 않았지만 DateTime 개체를 만듭니다.

마침내 나를 위해 일한 해결책을 찾았습니다. 다른 사람이 유용하다고 생각하기 때문에 그것을 공유 할 것이라고 생각했습니다.

var userTimeZone = 
     TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); 
var startTime = new DateTimeOffset(DateTime.Today.Ticks, 
     userTimeZone.GetUtcOffset(DateTime.Today)); 

여기서 트릭은 Ticks을 사용하므로 계산이 매우 원활합니다.

+1

이 답변은 잘 렸습니다. – Arithmomaniac

+0

죄송합니다. 답변에 모든 것이 포함되어 있다고 생각합니다. 나는 마지막 문장 뒤에있는 생각을 끝냈다. – Lockszmith

관련 문제