使用 Blazor 服务器端天气应用程序将 Unix、UTC 格式的数据接收时间 (dt) 从 API 调用转换为传统日期格式
Converting Data Receiving Time (dt) in Unix, UTC format from API Call into traditonal date format using Blazor Server-Side Weather App
抱歉,如果这个问题在其他地方得到了充分的回答,我似乎无法从许多现有的关于 unix 转换的帖子中拼凑出解决方案。我构建了一个粗略的 Blazor 服务器端天气预报应用程序,它调用天气预报 API 和 returns 七天预报,每一天都以 unix、utc 格式日期区分(例如:{" dt":1631293200})。我已经能够成功显示调用结果如下:
<tbody>
@foreach (var w in forecast.daily)
{
<tr>
<td>@w.dt</td>
<td>@w.temp?.min F°</td>
<td>@w.temp?.max F°</td>
<td>@w.temp?.day F°</td>
</tr>
}
</tbody>
有没有一种简单的方法可以在使用 C# 的 Blazor 服务器端应用程序中将“dt”结果转换为更易识别的日期,例如“9 月 13 日星期五”或“21 年 9 月 13 日” ?
如何将 unix utc 转换为本地时间。
您可以相应修改。
unix 时间戳就是自纪元以来经过的秒数。
public static class TimeUtils
{
public static DateTime UnixTimeStampToDateTime(double unixTimeStamp )
{
// The unix timestamp is how many seconds since the epoch time
// so just substract
var epochDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
epochDateTime = epochDateTime .AddSeconds( unixTimeStamp ).ToLocalTime();
return dateTime;
}
}
然后您可以将该 DateTime 转换为您希望的任何字符串格式
例如
myDateTime.ToLongDateString()
因此,如果您在名为 TimeUtils 的静态 class 中有一个方法,并假设 w.dt 是一个双精度数:
<tbody>
@foreach (var w in forecast.daily)
{
<tr>
<td>@(TimeUtils.UnixTimeStampToDateTime(w.dt).ToLongDateString())</td>
<td>@w.temp?.min F°</td>
<td>@w.temp?.max F°</td>
<td>@w.temp?.day F°</td>
</tr>
}
</tbody>
正如@Alexander Petrov 所指出的,还有另一种方法使用
DateTimeOffset.FromUnixTimeSeconds
其中returns一个DateTimeOffset对象。这也可以作为替代方案。
抱歉,如果这个问题在其他地方得到了充分的回答,我似乎无法从许多现有的关于 unix 转换的帖子中拼凑出解决方案。我构建了一个粗略的 Blazor 服务器端天气预报应用程序,它调用天气预报 API 和 returns 七天预报,每一天都以 unix、utc 格式日期区分(例如:{" dt":1631293200})。我已经能够成功显示调用结果如下:
<tbody>
@foreach (var w in forecast.daily)
{
<tr>
<td>@w.dt</td>
<td>@w.temp?.min F°</td>
<td>@w.temp?.max F°</td>
<td>@w.temp?.day F°</td>
</tr>
}
</tbody>
有没有一种简单的方法可以在使用 C# 的 Blazor 服务器端应用程序中将“dt”结果转换为更易识别的日期,例如“9 月 13 日星期五”或“21 年 9 月 13 日” ?
如何将 unix utc 转换为本地时间。
您可以相应修改。
unix 时间戳就是自纪元以来经过的秒数。
public static class TimeUtils
{
public static DateTime UnixTimeStampToDateTime(double unixTimeStamp )
{
// The unix timestamp is how many seconds since the epoch time
// so just substract
var epochDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
epochDateTime = epochDateTime .AddSeconds( unixTimeStamp ).ToLocalTime();
return dateTime;
}
}
然后您可以将该 DateTime 转换为您希望的任何字符串格式
例如
myDateTime.ToLongDateString()
因此,如果您在名为 TimeUtils 的静态 class 中有一个方法,并假设 w.dt 是一个双精度数:
<tbody>
@foreach (var w in forecast.daily)
{
<tr>
<td>@(TimeUtils.UnixTimeStampToDateTime(w.dt).ToLongDateString())</td>
<td>@w.temp?.min F°</td>
<td>@w.temp?.max F°</td>
<td>@w.temp?.day F°</td>
</tr>
}
</tbody>
正如@Alexander Petrov 所指出的,还有另一种方法使用
DateTimeOffset.FromUnixTimeSeconds
其中returns一个DateTimeOffset对象。这也可以作为替代方案。