Существует ли стандартный формат даты/времени, который может быть передан по URL-адресу?

Глядя на документацию DateTimeFormatInfo, похоже, что у всех стандартных форматов есть двоеточие, что позволяет передавать их по URL-адресу неприятный/невозможно.

Существует ли стандартизированный формат для передачи даты и времени на URL-адрес, предпочтительно тот, который может автоматически анализироваться .NET?


Обновление: Небольшое уточнение

Потребитель этих данных будет каким-то веб-сервисом - он будет либо простым HTTP GET с этим значением в querystring, либо он будет REST со значением в URL-адресе где-то.

ISO 8601 регулирует форматирование даты и времени, и, согласно статье wiki, использование ToString("yyyyMMddTHHmmssZ") должно соответствовать стандартам, по крайней мере. К сожалению, он не получает автоматически ASP.NET MVC (еще ничего не пробовал). Для чего это стоит, ASP.NET MVC не будет автоматически конвертировать тики в datetime, что меня удивило.

Ответы

Ответ 1

Я соберу все вместе в один ответ:

Вы можете сделать что-то вроде этого:

        string urlSafeDateString = HttpServerUtility.UrlTokenEncode(date.ToUniversalTime().ToString(System.Globalization.CultureInfo.InvariantCulture).ToCharArray());

        DateTime date = DateTime.Parse(new string(HttpServerUtility.UrlTokenDecode(urlSafeDateString)), System.Globalization.CultureInfo.InvariantCulture).ToLocalTime();

Или вы можете сделать что-то вроде этого:

        string urlSafeDateString = date.ToUniversalTime().ToString("yyyyMMddTHHmmss", System.Globalization.CultureInfo.InvariantCulture);

        DateTime date = DateTime.ParseExact(urlSafeDateString, "yyyyMMddTHHmmss", System.Globalization.CultureInfo.InvariantCulture).ToLocalTime();

Ответ 3

Он, вероятно, не является частью какого-либо стандарта или что-то в этом роде, но вы всегда можете использовать Unix timestamp, поскольку они содержат только цифры. См. эту статью о способах ее преобразования в .NET DateTime.

Ответ 4

На самом деле у нас есть решение для отчетов, в котором даты и время могут передаваться в виде текстовых значений CCYYMMDD и hhmmss, тогда, когда код должен что-либо делать с этими значениями, он просто использует операции со строками, чтобы вернуть их обратно в формат, который может отображаться или легко анализироваться (например, в форматах DB2 ISO CCYY-MM-DD или hh.mm.ss).

Результат доступен для чтения, и я был бы удивлен, если бы у .NET не было инструкций по обработке строк, которые могли бы сделать это легко.

Ответ 7

Для того, что стоит, ASP.NET MVC не будет автоматически конвертировать тики в datetime, что меня удивило.

Здесь есть конструктор для DateTime, который принимает количество тиков:

 DateTime d = new DateTime(634028202671420663);

Также существует переопределение, которое позволяет сопоставить это как с локальным, так и с UTC. Все это в документах: http://msdn.microsoft.com/en-us/library/system.datetime.datetime.aspx

Изменить: реализовано из формулировки сообщения, что, возможно, вы говорите об ASP, автоматически преобразуя тики в DateTime, вместо того, чтобы читать числовой параметр. Может быть!: -)