我有一个C#DateTime对象。该对象包括日期和时间。我需要将此信息传递给基于REST的服务。我的问题是,如何格式化DateTime,以便我可以通过查询字符串传递它,并将其解析回服务器端的DateTime?
DateTime startDate = GetStartDate();
string url = "http://www.mydomain.com/myservice.svc/[startDateGoesHere]
WebRequest request = HttpWebRequest.Create(url);
request.BeginGetResponse(new AsyncCallback(Service_Completed), request);
谢谢,
答案 0 :(得分:32)
只需使用ToString()并传递一种格式,例如:startDate.ToString(“yyyyMMddHHmmss”)
解析它答案 1 :(得分:21)
为了准确性和一致性,您可以使用:
string utcDateOut = DateTime.UtcNow.ToString("s", CultureInfo.InvariantCulture);
DateTime utcDateIn = DateTime.ParseExact(utcDateOut, "s",
CultureInfo.InvariantCulture,
DateTimeStyles.AdjustToUniversal);
这将为您提供符合ISO 8601标准的格式,并且使用UTC将确保时区等方面没有问题。
唯一的缺点是它看起来不像简单的“yyyyMMdd”那样“好看”。
答案 2 :(得分:5)
我使用yyyyMMdd
作为格式;不需要进行URL编码,并且易于阅读/理解。
在服务器端,您必须致电DateTime.ParseExact(dateString, "yyyyMMdd")
以获取日期。
希望这有帮助。
答案 3 :(得分:2)
string s = DateTime
。 ToString (“ yyyyMMddHHmmssfff ”)
注意:fff以毫秒为单位(如果不需要,您可以删除“ fff”)
然后使用
将其转换回DateTime
DateTime d = DateTime
。 ParseExact (s,“ yyyyMMddHHmmssfff ”,CultureInfo
。 InvariantCulture )