Передача C # DateTime через строку запроса - PullRequest
23 голосов
/ 08 мая 2011

У меня есть объект 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);

Спасибо,

Ответы [ 3 ]

33 голосов
/ 08 мая 2011

Просто используйте ToString () и передайте формат, например: startDate.ToString ("yyyyMMddHHmmss")

И проанализируйте его обратно, используя DateTime.ParseExact ()

21 голосов
/ 08 мая 2011

Для точности и последовательности вы можете использовать:

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

DateTime utcDateIn = DateTime.ParseExact(utcDateOut, "s", 
                              CultureInfo.InvariantCulture, 
                              DateTimeStyles.AdjustToUniversal);

Это даст вам формат, совместимый с ISO 8601, а использование UTC обеспечит отсутствие проблем с часовыми поясами и т. Д.

Единственным недостатком является то, что он не выглядит так же "хорошо", как простой "yyyyMMdd".

5 голосов
/ 08 мая 2011

Я бы использовал yyyyMMdd в качестве формата;не нужно кодировать URL, и его легко читать / понимать.

На стороне сервера вам нужно позвонить DateTime.ParseExact(dateString, "yyyyMMdd"), чтобы узнать дату.помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...