我正在序列化一個DateTime
值,它工作正常,創建一個ISODateTime
值。但它始終使用UTC進行序列化。強制本地日期時間序列化
YYY-MM-DDThh:mm:ss+hh:mm:ss
當我創建了DateTime
情況下,我強迫LocalTime
:
DateTime localDateTime = new DateTime(DateTime.Now.Ticks,DateTimeKind.Local);
但是,由於某種原因,它始終序列化爲UTC(我一直得到 '+01:00' 末)。它應該自動讀取得到DataTimeKind
和序列正常,但沒有... :(
如何配置串行或迫使DateTime
屬性在當地時間要進行序列化
編輯?這是一個測試類
[Serializable]
public class DateTimeTest
{
[System.Xml.Serialization.XmlElement("DateTime")]
public DateTime dateTime;
}
這是序列化代碼
public static string XMLSerializeToString<ObjectType>(ObjectType objetToSerialize, string defaultNamespace)
{
TextWriter stringWriter = new StringWriter();
XmlSerializer serializer =
defaultNamespace==null ? new XmlSerializer(typeof(ObjectType)) : new XmlSerializer(typeof(ObjectType),defaultNamespace);
serializer.Serialize(xmlWriter, objetToSerialize);
return stringWriter.ToString();
}
這是呼喚串行
DateTime localDateTime = new DateTime(DateTime.Now.Ticks, DateTimeKind.Local);
DateTimeTest dateTimeTest = new DateTimeTest();
dateTimeTest.dateTime = localDateTime;
string ser = XMLProcessor.XMLSerializeToString<DateTimeTest>(dateTimeTest, null);
這是得到的字符串
<?xml version="1.0" encoding="utf-16"?>
<DateTimeTest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DateTime>2013-10-25T17:01:35.7228+01:00</DateTime>
</DateTimeTest>
我不想讓17:01:35 + 01:00。我想得到17:01:35。我怎麼才能得到它?
謝謝:)
You haven' t說你正在使用什麼序列化程序,但是如果你不想看到時區偏移量,你可以嘗試設置Kind to DateTimeKind.Unspecified。 – Joe
你是什麼意思序列化?調用'ToString'方法? – Grundy
'+01:00'表示該值不是UTC,否則就是'Z'。這是您當地時間相對於UTC的偏移量。所以我不明白你的問題。你也不會描述你如何序列化它。 – CodesInChaos