Mar*_*rta 2 c# scheduled-tasks quartz.net asp.net-mvc-3 quartz.net-2.0
我正在使用Quartz.NET(http://quartznet.sourceforge.net/),我试图在午夜设置开始日期.但是我在创建这个日期时遇到了问题.此应用程序将站在不同时区的不同服务器上.但我希望这个时间总是在太平洋标准时间设定为午夜.
这是我的工作代码:
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();
Run Code Online (Sandbox Code Playgroud)
我需要DateTimeOffset格式的日期,即太平洋标准时间午夜.我使用MVC 3.任何帮助非常感谢!
无论服务器如何,这都应该为您提供午夜PST日期.
DateTime dateInDestinationTimeZone = System.TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, System.TimeZoneInfo.Utc.Id, "Pacific Standard Time").Date;
Run Code Online (Sandbox Code Playgroud)
很抱歉让这个死而复生,但我发现@Vishnu 提供的解决方案对我不起作用。
我正在一台 EST 机器上工作,创建对象的结果是我当地时间的午夜。另外,提到的解决方案并没有创建一个DateTimeOffset对象,而是创建一个DateTime对象。
我终于找到了一个对我有用的解决方案,我想我会在这里分享它,因为其他人可能会发现它有用。
var userTimeZone =
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
var startTime = new DateTimeOffset(DateTime.Today.Ticks,
userTimeZone.GetUtcOffset(DateTime.Today) );
Run Code Online (Sandbox Code Playgroud)
这里的技巧是使用Ticks,这使得计算变得非常“无缝”。
| 归档时间: |
|
| 查看次数: |
3871 次 |
| 最近记录: |