Подтвердить что ты не робот

Передача С# DateTime через строку запроса

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

Спасибо,

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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