में काम किया MVC में आप कार्रवाई फिल्टर करके इस समस्या को हल कर सकते हैं। कृपया निम्नलिखित चरणों का उपयोग करें:
1) सत्र में क्लाइंट टाइमज़ोन ऑफसेट जानकारी स्टोर करें।
2) डेटाटाइम कनवर्टर सहायक वर्ग बनाएँ।
public class DateTimeConverter
{
public static DateTime? ToLocalDatetime(DateTime? serverDate, int offset)
{
if (serverDate == null) return null;
return serverDate.Value.AddMinutes(offset * -1);
}
}
3)। कार्रवाई फ़िल्टर बनाएं।
public class LocalDateTimeConverter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var model = filterContext.Controller.ViewData.Model;
if (model != null && filterContext.HttpContext.Session["LocalTimeZoneOffset"] != null)
ProcessDateTimeProperties(model, filterContext);
base.OnActionExecuted(filterContext);
}
private void ProcessDateTimeProperties(object obj, ActionExecutedContext filterContext)
{
if (obj.GetType().IsGenericType)
{
foreach (var item in (IList)obj)
{
ProcessDateTimeProperties(item, filterContext);
}
}
else
{
TypeAccessor member;
List<PropertyInfo> props = new List<PropertyInfo>();
props.AddRange(obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty).ToList());
member = TypeAccessor.Create(obj.GetType());
foreach (PropertyInfo propertyInfo in props)
{
if (propertyInfo.PropertyType == typeof(DateTime) || propertyInfo.PropertyType == typeof(DateTime?))
{
{
member[obj, propertyInfo.Name] = DateTimeConverter.ToLocalDatetime((DateTime?)propertyInfo.GetValue(obj), ((int)filterContext.HttpContext.Session["LocalTimeZoneOffset"]));
}
}
else if (propertyInfo.PropertyType.IsGenericType && propertyInfo.GetValue(obj) != null)
{
foreach (var item in (IList)propertyInfo.GetValue(obj))
{
ProcessDateTimeProperties(item, filterContext);
}
}
}
}
}
}
4) जो दृश्य वापस जाने के लिए मॉडल डेटा शामिल कार्रवाई पर .Apply LocalDateTimeConverter फिल्टर।
इन सभी चरणों के बाद आप परिणाम देख सकते हैं जिसमें डेटटाइम जानकारी स्थानीय दिनांक समय में परिवर्तित होती है। इस कोड को स्थानीय समय में UTC समय परिवर्तित करने के लिए
<%: Html.DisplayFor(m=> m.SomeDate.ToLocalTime().ToString()) %>
स्रोत
2014-03-03 11:27:24
संबंधित देखें: [http://stackoverflow.com/questions/4066275/c-utc-to-users-local-time](http://stackoverflow.com/questions/4066275/c-utc -to-users-local-time) –
आपका कोड सर्वर-साइड क्लाइंट-साइड नहीं है। मुझे एहसास है कि यह नीचे टिप्पणियों में ध्वजांकित है लेकिन यह एक लोकप्रिय सवाल है और इसके बारे में पूछे जाने वाले तरीके से इसका अस्पष्ट है! – noelicus