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

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

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


Обновление: Немного разъяснения

Потребитель этих данных собирается быть веб-сервисом некоторого вида - это или будет простой HTTP, ДОБИРАЮТСЯ с этим значением в querystring, или это будет, Лежат на значении в URL где-нибудь.

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

20
задан Daniel Schaffer 26 February 2010 в 22:02
поделиться

7 ответов

Я объединю все в один ответ:

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

        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();
8
ответ дан 30 November 2019 в 01:08
поделиться

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

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

2
ответ дан 30 November 2019 в 01:08
поделиться

Если вам нужны дата и время, я бы использовал DateTime.Ticks .

Если вам нужна только дата, используйте HttpServerUtility.UrlEncode (date.ToShortDateString ()) .

Обновление: Рик Страл обсуждал эту проблему раньше и предложил решение в своем блоге .

1
ответ дан 30 November 2019 в 01:08
поделиться

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

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

 DateTime d = new DateTime(634028202671420663);

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

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

1
ответ дан 30 November 2019 в 01:08
поделиться

Да. ISO 8601

http://en.wikipedia.org/wiki/ISO_8601

Просто убедитесь, что вы используете кодировку URLE для работы с двоеточиями.

4
ответ дан 30 November 2019 в 01:08
поделиться

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

3
ответ дан 30 November 2019 в 01:08
поделиться
1
ответ дан 30 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: