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
我有这个代码:
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