当我在 json 对象中有数据时间时,我遇到问题,它会将其转换为 C# dateTime 中的 UTC 时区,只是想问如何保留本地时间?我可以在 web.config 文件或 geter 或 setter 中设置时区属性吗,因为我必须对象可以有日期和时间吗?
这是课堂例子吗?
public class Patient
{
public long RecordId { get; set; }
public string Username { get; set; }
public DateTime Date
{
get;
set;
}
public bool Deleted { get; set; }
public string ModifiedBy { get; set; }
public DateTime ModifiedOn { get; set; }
public string CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
}
更新我尝试使用 getter 和 setter 来修复我有这个异常{Cannot evaluate expression because the current thread is in a stack overflow state.}
[System.Web.Http.Route("api/postpatientform")]
public HttpResponseMessage PostPatientForm(PatientViewModel form)
{
using (var db = new AthenaContext())
{
try
{
var form2 = Mapper.Map<Patient>(form);
db.Patient.Add(form2);
db.SaveChanges();
var newId = form2.RecordId;
foreach (var activity in form.PatientActivities)
{
activity.PatientId = newId;
db.NonPatientActivities.Add(Mapper.Map<PatientActivity>(activity));
}
db.SaveChanges();
}
catch (DbEntityValidationException e)
{
foreach (var eve in e.EntityValidationErrors)
{
Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
eve.Entry.Entity.GetType().Name, eve.Entry.State);
foreach (var ve in eve.ValidationErrors)
{
Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
ve.PropertyName, ve.ErrorMessage);
}
}
throw;
}
}
return Request.CreateResponse<Patient>(HttpStatusCode.Created, null);
}
您可以更改序列化器设置以使用 JSON.net 序列化器:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.IsoDateFormat,
DateTimeZoneHandling = DateTimeZoneHandling.Unspecified,
};
您还可以选择多种日期格式:日期时区处理 https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/DateTimeZoneHandling.cs
/// <summary>
/// Specifies how to treat the time value when converting between string and <see cref="DateTime"/>.
/// </summary>
public enum DateTimeZoneHandling
{
/// <summary>
/// Treat as local time. If the <see cref="DateTime"/> object represents a Coordinated Universal Time (UTC), it is converted to the local time.
/// </summary>
Local = 0,
/// <summary>
/// Treat as a UTC. If the <see cref="DateTime"/> object represents a local time, it is converted to a UTC.
/// </summary>
Utc = 1,
/// <summary>
/// Treat as a local time if a <see cref="DateTime"/> is being converted to a string.
/// If a string is being converted to <see cref="DateTime"/>, convert to a local time if a time zone is specified.
/// </summary>
Unspecified = 2,
/// <summary>
/// Time zone information should be preserved when converting.
/// </summary>
RoundtripKind = 3
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)