如何在 linux 上的 .NET Core 中获取系统日期更改通知?

How to get a system date change notification in .NET core on linux?

我正在尝试在 .NET 中获取通知事件 core/Standard(因为我需要计划未来的操作)。我正在将一段现有的 .NET4.5x 代码移植到 .NET core 2.2 或 .NETStandard2。

原来我用的是:

SystemEvents.TimeChanged += SystemEvents_TimeChanged; //my handler

但在 .NETCore 或 .NETStandard 中,this is not implemented

克服这个问题最优雅的方法是什么?

好的,所以最后我这样做了(伪代码):

public TimeSpan CheckInterval { get; private set; } = TimeSpan.FromMinutes(1);
public TimeSpan MaxAllowedDeviation { get; private set; } = TimeSpan.FromSeconds(1);

private async Task CheckTimeUpdate()
{
    while (cancelToken.IsCancellationRequested == false)
    {
        DateTimeOffset beforeTimer = DateTimeOffset.Now;

        await Task.Delay(CheckInterval, cancelToken);

        DateTimeOffset afterTimer = DateTimeOffset.Now;

        if ((afterTimer.UtcDateTime - beforeTimer.UtcDateTime).Duration() > MaxAllowedDeviation + CheckInterval)
        {
            //raises the event
            TimeChanged?.Invoke();
        }
    }
}

但这只适用于手动更改时间,不适用于夏令时或时区更新!!