通过查询字符串传递C#DateTime

时间:2011-05-08 18:41:17

标签: c# .net datetime

我有一个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);

谢谢,

4 个答案:

答案 0 :(得分:32)

只需使用ToString()并传递一种格式,例如:startDate.ToString(“yyyyMMddHHmmss”)

使用DateTime.ParseExact()

解析它

答案 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