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

#c# #.net #datetime

#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);
  

Спасибо,

Ответ №1:

Просто используйте toString() и передайте формат, например:

 startDate.ToString("yyyyMMddHHmmss")
  

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

Комментарии:

1. DateTime. ParseExact был «именно» тем, что мне было нужно. Каламбур не предназначен. Спасибо!

2. Рассмотрите возможность использования StartDate. Тики и новое время-дата (ticks) также

Ответ №2:

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

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

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

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

Единственным недостатком является то, что это выглядит не так «красиво», как простое «ггггММдд».

Ответ №3:

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

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

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

Ответ №4:

строка s = DateTime .toStringГГГГМДДХХМ МССФФФ«)

Примечание: fff равен миллисекундам (вы можете удалить ‘fff’, если он не нужен)
Затем преобразуйте его обратно в DateTime, используя

DateTime d = DateTime .ParseExact(s, «ГГГГМДДХХММССФФФ«, CultureInfo .Инвариантная культура)