这可行,但我想知道是否有人有更好的方法。
目标:
获取客户端的 DateTime 偏移量并返回客户端本地时间的 DateTime 值。
我做了什么:
在前端,我创建了一个自定义标头并将其传递到请求中。
export class ItemService {
baseUrl = environment.apiUrl;
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'TimeZone-Offset': `${new Date().getTimezoneOffset()}`
})
}
constructur(private authHttp: HttpClient) { }
getItems() {
return this.authHttp.get<Item[]>(this.baseUrl + 'items',
{ headers: this.httpOptions.headers });
}
}
然后在后端,我拉入标头值,将其转换为整数,然后使用该AddMinutes功能将 UTC 时间转换为本地时间。
public class ItemsController : Controller
{
[HttpGet]
public async Task<IActionResult> GetItems()
{
var currentTime = DateTime.UtcNow.AddMinutes(int.Parse(
Request.Headers["TimeZone-Offset"] != StringValues.Empty
? Request.Headers["TimeZone-Offset"][0] : "0"));
// ...logic to return items
}
因此,如果添加了 TimeZone-Offset 标头,服务器将能够将 DateTimes 转换为客户端的本地时间,否则,DateTimes 将以 UTC 给出。有没有更好的办法?我是否应该将所有 UTC 都留在服务器上,然后在客户端进行 UTC 到本地转换?
斯蒂芬大帝
守候你守候我
相关分类