Вопрос: Передача 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);

Спасибо,


21


источник


Ответы:


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

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


29



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

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

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

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

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


20



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

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

Надеюсь это поможет.


5