using System.Diagnostics;
using System.Xml.Serialization;
using System.Collections.Generic;
public static void Main()
string timeString ="12/28/2019 15:30:01";
Console.WriteLine($"Date: {timeString}");
var dateTimeDemo1=new DateTimeDemo();
dateTimeDemo1.DemoTime = DateTime.Parse(timeString);
Console.WriteLine(dateTimeDemo1);
Console.WriteLine(new string('-', 140 ));
dateTimeDemo1.DemoTime = DateTime.SpecifyKind(dateTimeDemo1.DemoTime, DateTimeKind.Local);
Console.WriteLine(dateTimeDemo1);
dateTimeDemo1.DemoTime = DateTime.SpecifyKind(dateTimeDemo1.DemoTime, DateTimeKind.Utc);
Console.WriteLine(dateTimeDemo1);
dateTimeDemo1.DemoTime = DateTime.SpecifyKind(dateTimeDemo1.DemoTime, DateTimeKind.Unspecified);
Console.WriteLine(dateTimeDemo1);
public class DateTimeDemo
public override string ToString()
return $"Date: {DemoTime,-25} Kind: {Kind,-15} XML: {SerializationHelper.XmlSerialize(this)}";
public static class SerializationHelper
public static string XmlSerialize<T>(T obj)
if (EqualityComparer<T>.Default.Equals(obj, default(T)))
var xmlSerializer = new XmlSerializer(typeof(T));
var settings = new XmlWriterSettings{OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Auto};
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
using (Utf8StringWriter stringWriter = new Utf8StringWriter())
using (XmlWriter writer = XmlWriter.Create(stringWriter, settings))
xmlSerializer.Serialize(writer, obj, ns);
return stringWriter.ToString();
public class Utf8StringWriter : StringWriter
public override Encoding Encoding