我正在 MVC3 中构建一个应用程序,当用户进入我的网站时,我想知道该用户的时区。我想知道如何在 c# 中而不是在 javaScript 中执行此操作?
如前所述,您需要您的客户端告诉您的 ASP.Net 服务器有关它们所在时区的详细信息。
这是一个例子。
我有一个 Angular Controller ,它从我的 SQL Server 数据库以 JSON 格式加载记录列表。问题是,DateTime
这些记录中的值在 UTC 时区,我想向用户显示他们本地时区的日期/时间。
我使用 JavaScript“getTimezoneOffset()
”函数确定用户的时区(以分钟为单位),然后将此值附加到我尝试调用的 JSON 服务的 URL:
$scope.loadSomeDatabaseRecords = function () {
var d = new Date()
var timezoneOffset = d.getTimezoneOffset();
return $http({
url: '/JSON/LoadSomeJSONRecords.aspx?timezoneOffset=' + timezoneOffset,
method: 'GET',
async: true,
cache: false,
headers: { 'Accept': 'application/json', 'ragma': 'no-cache' }
}).success(function (data) {
$scope.listScheduleLog = data.Results;
});
}
timezoneOffset
范围...int timezoneOffset = 0;
string timezoneStr = Request["timezoneOffset"];
if (!string.IsNullOrEmpty(timezoneStr))
int.TryParse(timezoneStr, out timezoneOffset);
LoadDatabaseRecords(timezoneOffset);
FromUTCData
函数,但 LINQ to SQL 不能将原始 SQL 与 C# 函数结合起来。DateTime
每个记录中的字段。public var LoadDatabaseRecords(int timezoneOffset)
{
MyDatabaseDataContext dc = new MyDatabaseDataContext();
List<MyDatabaseRecords> ListOfRecords = dc.MyDatabaseRecords.ToList();
var results = (from OneRecord in ListOfRecords
select new
{
ID = OneRecord.Log_ID,
Message = OneRecord.Log_Message,
StartTime = FromUTCData(OneRecord.Log_Start_Time, timezoneOffset),
EndTime = FromUTCData(OneRecord.Log_End_Time, timezoneOffset)
}).ToList();
return results;
}
public static DateTime? FromUTCData(DateTime? dt, int timezoneOffset)
{
// Convert a DateTime (which might be null) from UTC timezone
// into the user's timezone.
if (dt == null)
return null;
DateTime newDate = dt.Value - new TimeSpan(timezoneOffset / 60, timezoneOffset % 60, 0);
return newDate;
}
关于c# - 如何在c#中获取当前用户时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8194016/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |