给定TimeSpan偏移量,如何获取用户时区中的当前日期?

时间:2019-02-20 14:53:22

标签: c# date datetime .net-core

我需要找到给定Timespan偏移量的用户的星期几。

现在,这是我尝试过的:

string timezone = this.HttpContext.Request.Headers["X-MyApp-Timezone"];
var timeSpan = TimeSpan.Parse(timezone, DateTimeFormatInfo.InvariantInfo);
var consumersCurrentTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, timeSpan);
var consumersCurrentDate = consumersCurrentTime.Date();

我知道这是行不通的,因为TimeZoneInfo.ConvertTimeFromUtc使用TimeZoneInfo而不是TimeSpan。我仔细研究了一下,发现不可能给出一个偏移量来获取整个时区信息,但是我真的不需要知道确切的时区,只需知道它是星期几。有什么办法可以做到吗?

2 个答案:

答案 0 :(得分:1)

string timezone = this.HttpContext.Request.Headers["X-MyApp-Timezone"];
DateTime consumersCurrentDateTime = DateTime.UtcNow + TimeSpan.Parse(timezone, 
DateTimeFormatInfo.InvariantInfo);
DateTime customersCurrentDate = consumersCurrentDateTime.Date;

答案 1 :(得分:0)

由于Joao Paulo的评论,我认为我可以完全不涉及时区,而这样做:

string timezone = this.HttpContext.Request.Headers["X-MyApp-Timezone"];
var timeSpan = TimeSpan.Parse(timezone, DateTimeFormatInfo.InvariantInfo);
var consumersCurrentDate = DateTimeOffset.UtcNow.ToOffset(timeSpan).Date;
相关问题