2011-04-15 42 views

回答

14

我認爲W3C日期時間曾經爲很多更顯著位時間。 下面是我使用的:

// DateTime to W3C dateTime string 
string formatString= "yyyy-MM-ddTHH:mm:ss.fffffffzzz"; 
dateTimeField.ToString(formatString) ; 

// W3C dateTime string to DateTime 
System.Globalization.CultureInfo cInfo= new System.Globalization.CultureInfo("en-US", true); 
dateTimeField= System.DateTime.ParseExact(stringValue, formatString, cInfo); 
0

我想JSON.net可以處理它。 使用IsoDateTimeConverter

從技術文檔:

public class LogEntry 
{ 
    public string Details { get; set; } 
    public DateTime LogDate { get; set; } 
} 

[Test] 
public void WriteJsonDates() 
{ 
    LogEntry entry = new LogEntry 
    { 
    LogDate = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc), 
    Details = "Application started." 
    }; 

    string defaultJson = JsonConvert.SerializeObject(entry); 
    // {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"} 

    string javascriptJson = JsonConvert.SerializeObject(entry, new JavaScriptDateTimeConverter()); 
    // {"Details":"Application started.","LogDate":new Date(1234656000000)} 

    string isoJson = JsonConvert.SerializeObject(entry, new IsoDateTimeConverter()); 
    // {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"} 
} 
+0

如果他將它嵌入到JSON中,這很有意義。否則不是。 – Cheeso 2011-04-15 13:20:13

5

這將轉換成你需要的字符串並解析後面的字符串到日期時間:

var now = DateTime.Now; 
Console.WriteLine(now.ToUniversalTime().ToString()); 
var nowString = now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"); 
Console.WriteLine(nowString); 

var nowAgain = DateTime.ParseExact(nowString, "yyyy-MM-ddTHH:mm:ssZ", null); 
Console.WriteLine(nowAgain.ToUniversalTime().ToString()); 

Console.ReadLine(); 
0

Xml序列化是爲你準備的。下面是代碼如何: -

DateTime someDateTime = DateTime.Now.AddDays(5); 
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(DateTime)); 
System.IO.MemoryStream ms = new System.IO.MemoryStream(); 
// converting to w3c xml 
ser.Serialize(ms, someDateTime); 

//**Edited** 
ms.Position = 0; 
//**Edited** 

System.IO.StreamReader sr = new System.IO.StreamReader(ms); 
string w3cxml = sr.ReadToEnd(); 

sr.Close(); 
ms.Close(); 

// doing reverse 
System.IO.StringReader reader = new System.IO.StringReader(w3cxml); 

DateTime thatDateTime = (DateTime)ser.Deserialize(reader); 

reader.Close(); 
12

如果你想在W3C XML格式的日期,然後使用NET的W3C XML格式API(在那裏,因爲之前V1.0):

var w3cStringFormat = XmlConvert.ToString(DateTime.Now); 

結果:

2014-09-12T16:03:22.6833035 + 01:00

然後再恢復了它:

var dateTime = XmlConvert.ToDateTime(w3cStringFormat); 
+0

XMLConvert應該是第一個代碼片段中的XmlConvert。 – 2016-02-12 14:22:14

+0

根據MSDN的說法,「.NET Framework 2.0版中的XmlConvert.ToString(DateTime)方法已過時,並已被替換爲XmlConvert.ToString(DateTime,XmlDateTimeSerializationMode)方法。」 - https://msdn.microsoft.com/en-us/library/zds88xsz(v=vs.110).aspx 它仍然有效,但。 – 2016-12-07 19:19:02

+0

我這樣做:XmlConvert.ToString(DateTime.Now,XmlDateTimeSerializationMode.Local)。其他序列化模式在這裏:https://msdn.microsoft.com/en-us/library/system.xml.xmldatetimeserializationmode(v=vs.110).aspx – 2016-12-07 19:26:51

相關問題