using IRaCIS.Core.Domain.Share; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; namespace IRaCIS.Core.API { public class JSONCustomDateConverter : DateTimeConverterBase { private TimeZoneInfo _timeZoneInfo; private string _dateFormat; private IUserInfo _userInfo; public JSONCustomDateConverter(string dateFormat, TimeZoneInfo timeZoneInfo, IUserInfo userInfo) { _dateFormat = dateFormat; _timeZoneInfo = timeZoneInfo; _userInfo = userInfo; } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { throw new NotImplementedException(); } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { var timeZoneId = _userInfo.TimeZoneId; var needConvertUtcDateTime = Convert.ToDateTime(value); var tz = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); var dateTimeOffset = new DateTimeOffset(needConvertUtcDateTime); var time = TimeZoneInfo.ConvertTimeFromUtc(needConvertUtcDateTime, tz).ToString(_dateFormat); writer.WriteValue(time); writer.Flush(); } } }