Ответ 1
Просто используйте ToString() и передайте формат, например: startDate.ToString( "yyyyMMddHHmmss" )
И проанализируйте его, используя DateTime.ParseExact()
У меня есть объект С# 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);
Спасибо,
Просто используйте ToString() и передайте формат, например: startDate.ToString( "yyyyMMddHHmmss" )
И проанализируйте его, используя DateTime.ParseExact()
Для точности и согласованности вы можете использовать:
string utcDateOut = DateTime.UtcNow.ToString("s", CultureInfo.InvariantCulture);
DateTime utcDateIn = DateTime.ParseExact(utcDateOut, "s",
CultureInfo.InvariantCulture,
DateTimeStyles.AdjustToUniversal);
Это даст вам формат, соответствующий стандарту ISO 8601, и использование UTC обеспечит отсутствие проблем с часовыми поясами и т.д.
Единственный недостаток заключается в том, что он не выглядит "приятным", как простой "yyyyMMdd".
Я использовал бы yyyyMMdd
как формат; не нужно кодировать URL и легко читать/понимать.
На стороне сервера вам нужно будет позвонить DateTime.ParseExact(dateString, "yyyyMMdd")
, чтобы получить дату.
Надеюсь, что это поможет.