很抱歉,如果这个问题在其他地方得到了充分的回答,我似乎无法从许多关于unix转换的现有帖子中拼凑出解决方案。我构建了一个粗糙的Blazor服务器端天气预报应用程序,它调用天气预报API并返回七天的天气预报,其中每一天都由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>有没有一种简单的方法可以在Blazor服务器端应用程序中使用C#将"dt“结果转换为更容易识别的日期,比如”星期五,9月13日“或"09/13/21”?
发布于 2021-09-13 16:00:32
这是如何将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的静态类中有这个方法,并假设w.dt是一个double:
<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它返回一个DateTimeOffset对象。这也可以是另一种选择。
https://stackoverflow.com/questions/69165575
复制相似问题