如何在太平洋标准时间中创建设置为午夜的日期时间偏移量

本文关键字:午夜 日期 偏移量 时间 设置 创建 太平洋 标准时间 | 更新日期: 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 ,这使得计算非常"无缝"。