【发布时间】:2019-10-18 21:00:18
【问题描述】:
我有下一个自定义模型绑定器:
public class WebApiModelBinderDateTime : IModelBinder
{
public bool BindModel(HttpActionContext executionContext, ModelBindingContext bindingContext)
{
ValueProviderResult value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (value == null)
{
return false;
}
DateTime date = (DateTime)value.ConvertTo(typeof(DateTime), CultureInfo.CurrentCulture);
date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
bindingContext.Model = date;
return true;
}
}
文化在 web.config 中设置如下:
<globalization culture="en-GB" enableClientBasedCulture="false" uiCulture="en-GB" />
在 global.asax 中是这样的:
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-GB");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
问题是这个活页夹在本地和远程返回不同的日期。
例如2019-06-03T09:53:26.651Z 将在本地转换为2019-06-03 10:53:26,但在云端转换为2019-06-03 09:53:26(这是部署到 Azure 云服务的旧系统)。
我尝试在本地和远程调试,但没有发现CultureInfo.CurrentCulture、ModelBindingContext、ValueProvider 或ValueProviderResult 之间有任何区别。
还有什么会导致不同的时区?
【问题讨论】:
标签: .net datetime timezone globalization azure-cloud-services