[英]How do I convert DateTime .NET datatype to W3C XML DateTime data type string and back?
I have a System.DateTime
object and I need to convert it into a string storing that datetime in W3C XML DateTime format (yyyy-mm-ddThh:mm:ssZ) and then be able to convert the resulting string back into System.DateTime
. 我有一个
System.DateTime
对象,我需要将它转换为一个字符串,以W3C XML DateTime格式存储该日期时间(yyyy-mm-ddThh:mm:ssZ),然后能够将结果字符串转换回System.DateTime
。
Is there something ready for that in .NET or do I have to implement it myself? 在.NET中是否有为此做好准备或者我必须自己实现它?
I thought W3C dateTime had a lot more significant digits for the time. 我认为W3C dateTime当时有更多有效数字。 Here's what I use:
这是我使用的:
// 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);
If you want a date in the W3C XML format, then use .Net's W3C XML formatting API (been there since before v1.0): 如果你想要一个W3C XML格式的日期,那么使用.Net的W3C XML格式化API(自v1.0之前就已经存在):
var w3cStringFormat = XmlConvert.ToString(DateTime.Now);
results in: 结果是:
2014-09-12T16:03:22.6833035+01:00 2014-09-12T16:03:22.6833035 + 01:00
Then to get it back again: 然后再回来:
var dateTime = XmlConvert.ToDateTime(w3cStringFormat);
This will convert to the string you need and parse back the string to the DateTime: 这将转换为您需要的字符串并将字符串解析回DateTime:
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();
I would think JSON.net can handle it. 我认为JSON.net可以处理它。 Use IsoDateTimeConverter .
使用IsoDateTimeConverter 。
From documentation: 来自文档:
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"}
}
Xml Serialization is there for you. Xml序列化就在你身边。 Below is the code how to:-
以下是代码如何: -
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.