DateTime.Now 在 Blazor Webassembly 中为空

DateTime.Now in Blazor Webassembly is null

我有这个代码:

 DateTime now = DateTime.Now; // null
    decimal noon = 0m;
    int dayOfYear = now.DayOfYear; // reports 98, correct
    bool isAM = false;
    if (dayOfYear >= 80 && dayOfYear <= 260)
    {
        noon = 13m;
        int h = now.Hour; // 0 (should be 15)          
        isAM = now.Hour >= 13 ? false : true; // true (should be false)
    }

在组件中的 Blazor webassembly 中,当我调试时,虽然 'now' 变量为空,但 'dayOfYear' 变量正确显示 98,但 'now.Hour' 为 0,并且计算机时间正确是 3:30 下午,为什么 'now' 变量为空?以及它如何正确报告 dayOfYear 98?为什么小时是0!?我正在使用 Blazor 3.2 并使用其新的调试功能。

更新: 小时是正确的,只有 DateTime 对象的 'null' 值让我怀疑,如下面的屏幕截图所示:

使用这段代码解决了我的问题,也许本地 Am Pm 是问题所在:

DateTime now = DateTime.Now.Date; // here
    int hour = DateTime.Now.Hour; // here       
    double noon = 0;
    int dayOfYear = now.DayOfYear; // here
    bool isAM = false;
    if (dayOfYear >= 80 && dayOfYear <= 260)
    {
        noon = 13;
        int h = hour; 
        isAM = hour >= 13 ? false : true; // here
    }

前几天我运行遇到了类似的问题。 目前 Blazor Wasm 不包含任何时区信息,本地时区始终为 UTC。 但是,有一个可用的修复程序来获取正确的时区信息。 看看这个:Blazor WebAssembly App (client-side) Time Zone Kit