2015-11-16 15 views

回答

0

希望這會有所幫助。我使用Json.NET庫來完成我的序列化和一個內存流。你需要做的第一件事就是確保你的DateTime對象有你期望它的類。我用LINQPad.NET來創建這個小示範。我使用了傳奇轉儲方法

.Dump()

此方法將採用.NET DateTime對象並將值吐出到結果窗口中。正如你所看到的,我已經瞄準了你所問的Kind屬性。

void Main() 
{ 
    var date = new DateTime(2015, 12, 25, 0, 0, 0, DateTimeKind.Local); 
    date.Kind.Dump(); 

    using (var memoryStream = new MemoryStream()) 
    { 
     Serialize(date, memoryStream); 
     memoryStream.Position = 0; 
     var deserializedDate = Deserialize<DateTime>(memoryStream); 
     deserializedDate.Kind.Dump(); 
    } 
} 

// Define other methods and classes here 
public static void Serialize(object value, Stream s) 
{ 
    StreamWriter writer = new StreamWriter(s); 

    JsonTextWriter jsonWriter = new JsonTextWriter(writer); 
    JsonSerializer ser = new JsonSerializer(); 
    ser.Serialize(jsonWriter, value); 
    writer.Flush();  
} 

public static T Deserialize<T>(Stream s) 
{ 
    T result; 
    using (StreamReader reader = new StreamReader(s)) 
    { 
     JsonTextReader jsonReader = new JsonTextReader(reader); 
     JsonSerializer ser = new JsonSerializer(); 
     result = ser.Deserialize<T>(jsonReader); 
    } 
    return result; 
} 

玩這個演示代碼,並從DateTimeKind.Local更改本地實物DateTimeKind.Utc並確認此爲你工作。如果您有任何問題,我會很樂意嘗試幫助。

0

我正在尋找比dacke.geo的anwers更簡單的解決方案,所以我用我解決的解決方案回答我自己的問題。雖然這並沒有回答我原來的問題詳盡,使用訪問,並假設UTC時間獲取我的情況下完成工作:

internal static DateTime MyDate 
{ 
    get { return DateTime.SpecifyKind(Properties.Settings.Default.MyDate, DateTimeKind.Utc); } 
    set { Properties.Settings.Default.MyDate = value.ToUniversalTime(); } 
} 
+0

很抱歉,如果我包含了太多的信息,我是,你需要序列化的假設下所以我提供了一個使用Json的例子。我很高興你找到了適合你的解決方案。 –

相關問題