metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-10-13 03:04 pm

Тупой и еще тупее

Скажите мне пожалуйста, существует ли общепринятый метод передачи дат или даты-времени в параметрах URL для сервиса, например?
Сколько не пишу подобное - практически всегда все сводится к "прибиваем гвоздями ISO8601, парсим строку руками и под каждую задачу заново решаем, что делать с невалидными строками - то ли валится с 4хх, то ли валится с 5хх, то ли игнорировать ошибки, использовать или нет TryParse (если он вообще есть, обычно нету - "у нас всегда все работает, а невалидных дат не бывает") и как возвращать сообщения об ошибках клиенту так, чтобы он мог хоть что-то вменяемое сделать.

[identity profile] sbj-ss.livejournal.com 2013-10-13 01:52 pm (UTC)(link)
Мне нравится формат, используемый в RSS: "Fri, 20 Sep 2013 10:32:00 GMT". Несмотря на избыточность (день недели) и запись месяца строкой, отлично съедается String.TryParse().

[identity profile] vp.livejournal.com 2013-10-13 02:17 pm (UTC)(link)
Съедается в какой локали?

[identity profile] sbj-ss.livejournal.com 2013-10-13 02:19 pm (UTC)(link)
В нейтральной, если я правильно помню.

[identity profile] sergiej.livejournal.com 2013-10-13 03:27 pm (UTC)(link)
В урле с пробелами и двоеточиями? Круто.

[identity profile] sbj-ss.livejournal.com 2013-10-13 03:31 pm (UTC)(link)
Вот на что-что, а на экранирование символов в GET/POST данных есть совершенно однозначный RFC.

[identity profile] sergiej.livejournal.com 2013-10-14 04:30 am (UTC)(link)
создавать проблемы, а потом их героически решать, для дат тоже есть iso но автор попросил что-то "кошерное иначе"

[identity profile] sbj-ss.livejournal.com 2013-10-14 08:43 am (UTC)(link)
..и все сошлись на том, что универсального "кошерного иначе" нет :)
Следовательно, годится любой однозначно интерпретируемый формат, который можно минимальными усилиями преобразовать в машинное представление, один из которых я и предложил - пусть и произвольным образом.
Что до "героически решать" - я бы согласился, если бы пробелов, двоеточий и т.д. не могло бы быть в других параметрах запроса. На текстовые поля предустановленных форматов нет по определению.