如何在太平洋标准时间中创建设置为午夜的日期时间偏移量
本文关键字:午夜 日期 偏移量 时间 设置 创建 太平洋 标准时间 | 更新日期: 2023-09-27 18:32:10
我正在使用 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();
我需要日期时间偏移格式的日期为太平洋标准时间午夜。我使用 MVC 3。任何帮助非常感谢!
这应该为您提供午夜 PST 日期,而不考虑服务器。
DateTime dateInDestinationTimeZone = System.TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, System.TimeZoneInfo.Utc.Id, "Pacific Standard Time").Date;
很抱歉从死里复活,但我发现@Vishnu提供的解决方案对我不起作用。
我正在一台 EST 机器上工作,创建对象的结果是我当地时间的午夜。此外,提到的解决方案没有创建一个DateTimeOffset
对象,而是一个DateTime
的对象。
我终于找到了一个适合我的解决方案,我想我会在这里分享它,因为其他人可能会发现它很有用。
var userTimeZone =
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
var startTime = new DateTimeOffset(DateTime.Today.Ticks,
userTimeZone.GetUtcOffset(DateTime.Today) );
这里的诀窍是使用 Ticks
,这使得计算非常"无缝"。