using System.Xml.Serialization;
using System.Globalization;
public static void Main()
var json = "{'StatusSgr':'5','StatusStr':'02','NumOrigemOr':'PTX20210112001010885','NumCtrlSPB':null,'CodErro':null,'DataReserva':'2021-01-12T15:07:03.863','DthrVencto':'2021-01-12T15:07:03.8867176','XML':'<PTX0001><CodMsg>PTX0001</CodMsg><CNPJBasePart>0000000</CNPJBasePart><DtHrCot>2021-01-12T15:07:03</DtHrCot><DtHrFcht>2021-01-12T15:09:03</DtHrFcht><DtHrBC>2021-01-12T15:07:03</DtHrBC><DtMovto>2021-01-12</DtMovto></PTX0001>'}";
var intfModel = JsonConvert.DeserializeObject<MsgIntfModel>(json);
Console.WriteLine("Before Serialization\r\n" + intfModel.XML);
var xml = DeserializeFromString<Ptx0001Dto>(intfModel.XML);
Console.WriteLine("\r\nAfter Deserialization and Serialization\r\n" + SerializeToString(xml));
Console.WriteLine($"\r\nAfter DeserializeFromString: {xml.DtHrCot:yyyy-MM-ddTHH:mm:ss}");
var timeZone = TimeZoneInfo.CreateCustomTimeZone("America/SaoPaulo", TimeSpan.FromHours(-3), null, null);
var dt1 = DateTime.ParseExact("2021-01-12T18:07:03", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
var dt2 = TimeZoneInfo.ConvertTimeFromUtc(dt1, timeZone);
var dt3 = TimeZoneInfo.ConvertTimeFromUtc(dt1, TimeZoneInfo.Utc);
var dt4 = TimeZoneInfo.ConvertTimeFromUtc(dt1, TimeZoneInfo.Local);
Console.WriteLine($"\r\nDateTime.ParseExact InvariantCulture: {dt1:yyyy-MM-ddTHH:mm:ss}");
Console.WriteLine($"\r\nConvertTimeFromUtc America/SaoPaulo: {dt2:yyyy-MM-ddTHH:mm:ss}");
Console.WriteLine($"\r\nConvertTimeFromUtc TimeZoneInfo.Utc: {dt3:yyyy-MM-ddTHH:mm:ss}");
Console.WriteLine($"\r\nConvertTimeFromUtc TimeZoneInfo.Local: {dt4:yyyy-MM-ddTHH:mm:ss}");
[XmlRoot(ElementName = "PTX0001")]
public string CNPJBasePart
public string CNPJBaseDealer
public static T DeserializeFromString<T>(string stringXML)
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
StringReader stringReader = new StringReader(stringXML);
return (T)xmlSerializer.Deserialize(stringReader);
public static string SerializeToString<T>(T instance)
var stringWriter = new StringWriter();
var emptyNamespaces = new XmlSerializerNamespaces(new[]{XmlQualifiedName.Empty});
var serializer = new XmlSerializer(typeof(T));
var options = new XmlWriterSettings{Indent = true, OmitXmlDeclaration = true};
using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, options))
serializer.Serialize(xmlWriter, instance, emptyNamespaces);
return stringWriter.ToString();
public class MsgIntfModel
public string NumOrigemOr
public DateTime DataReserva
public DateTime DthrVencto
[XmlRoot("PTX0002", Namespace = "")]
public class Ptx00002Model
public string CNPJBasePart
public string CNPJBaseDealer
public decimal VlrCotCompraDolar
public decimal VlrCotVendaDolar
[XmlElement(DataType = "date")]