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

use*_*662 29 .net c# 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);
Run Code Online (Sandbox Code Playgroud)

谢谢,

Ern*_*rno 37

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

并使用DateTime.ParseExact()解析它

  • DateTime.ParseExact'完全'是我需要的.没有双关语.谢谢! (6认同)

Lee*_*unn 22

为了准确性和一致性,您可以使用:

string utcDateOut = DateTime.UtcNow.ToString("s", CultureInfo.InvariantCulture);

DateTime utcDateIn = DateTime.ParseExact(utcDateOut, "s", 
                              CultureInfo.InvariantCulture, 
                              DateTimeStyles.AdjustToUniversal);
Run Code Online (Sandbox Code Playgroud)

这将为您提供符合ISO 8601标准的格式,并且使用UTC将确保时区等方面没有问题.

唯一的缺点是它看起来不像简单的"yyyyMMdd"那样"好看".


Est*_*aya 5

yyyyMMdd用作格式; 不需要进行URL编码,并且易于阅读/理解.

在服务器端,您必须致电DateTime.ParseExact(dateString, "yyyyMMdd")以获取日期.

希望这可以帮助.