Blazor Server端天气应用如何将Unix UTC格式dt时间转为传统日期格式
解决方案
Blazor Server 基于 .NET 运行时,可直接使用 .NET 内置的时间处理工具完成 Unix 时间戳转换,无需引入第三方依赖,实现方法非常简单:
核心转换逻辑
你拿到的dt是10位秒级 Unix UTC 时间戳,直接调用DateTimeOffset.FromUnixTimeSeconds()方法即可完成转换,支持.NET Core 2.1及以上所有版本,完全兼容Blazor Server场景。
实现方式1:直接在Razor视图中转换
直接修改你现有代码中展示dt的单元格即可:
<tbody> @foreach (var w in forecast.daily) { <tr> <!-- 按需替换ToString内的格式符即可输出不同格式的日期 --> <td>@DateTimeOffset.FromUnixTimeSeconds(w.dt).ToLocalTime().ToString("MM/dd/yy")</td> <td>@w.temp?.min F°</td> <td>@w.temp?.max F°</td> <td>@w.temp?.day F°</td> </tr> } </tbody>
实现方式2:封装为扩展方法复用(更推荐)
如果多处需要用到Unix时间转换,可以封装成C#扩展方法,减少重复代码:
- 新建静态扩展类:
public static class UnixTimeConvertExtensions { /// <summary> /// 秒级Unix时间戳转本地时间 /// </summary> public static DateTime ToLocalDateTime(this long unixTimeSeconds) { return DateTimeOffset.FromUnixTimeSeconds(unixTimeSeconds).LocalDateTime; } }
- 在Razor视图中直接调用:
<!-- 输出 09/13/21 格式 --> <td>@w.dt.ToLocalDateTime().ToString("MM/dd/yy")</td> <!-- 输出 Friday, Sep 13 格式 --> <td>@w.dt.ToLocalDateTime().ToString("dddd, MMM dd")</td>
常用日期格式符参考
MM/dd/yy:月/日/年短格式,例:09/13/21dddd, MMM dd:星期+月份简写+日期,例:Friday, Sep 13f:完整友好日期时间,例:Friday, September 13, 2021 12:00 PMd:标准短日期,例:9/13/2021
如果你的dt字段是字符串类型,先调用long.Parse(w.dt)转换为长整型后再执行上述方法即可。
内容的提问来源于stack exchange,提问作者Adam Cushing
相关产品推荐
相关产品推荐

