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

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

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

[identity profile] veremeenko-alex.livejournal.com 2013-10-13 12:16 pm (UTC)(link)
Нету. Все во что кто горазд.

И не дай бог контрол на странице использует локаль пользователя, а парсится с локалью сервера.
Сайт нормально работает только до 12 числа каждого месяца :)

[identity profile] sergiej.livejournal.com 2013-10-13 12:19 pm (UTC)(link)
если юзеру нет дела до даты и времени то юниксовый таймстемп просто и удобно. Если есть дело то хоть и не станарт, но удобоно: YYYYMMDDHHMMSS (ну если часовой пояс некритичен) :)
Edited 2013-10-13 12:20 (UTC)

[identity profile] mehanizator.livejournal.com 2013-10-13 12:31 pm (UTC)(link)
таймстамп GMT+0

[identity profile] berezovsky.livejournal.com 2013-10-13 12:58 pm (UTC)(link)
можно взять DateTime.ParseExact со параметром "O", где дата и время буквой T разделяются
падать по ситуации, ошибки в лог писать, наиболее серьёзные сбои - уведомлением админу, клиента успокаивать, "мы работаем над этим"

[identity profile] berezovsky.livejournal.com 2013-10-13 01:12 pm (UTC)(link)
Вообще, тут желание решить задачу раз и навсегда максимально удобным, красивым и универсальным способом.
Как у Форда, который хотел создать двигатель самым мощным, надёжным и экономичным.
Но у него как-то была глобальная цель сделать автомобиль доступным рядовому гражданину.
А тут выходит, что решение должно подходить под любой будущий абстрактный проект. Не совсем понятно. :-(

[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] chemodax.livejournal.com 2013-10-13 02:21 pm (UTC)(link)
В любом случае 4xx, а не 5xx: 5xx это проблема на сервере (конфигурации или там памяти не хватает), а 4xx это что-то не так с запросом и нет смысла пробовать еще раз без изменение запроса.

[identity profile] bydlorus.livejournal.com 2013-10-13 05:14 pm (UTC)(link)
time.ToString а там пусть разбираются.

[identity profile] bydl0coder.livejournal.com 2013-10-13 09:47 pm (UTC)(link)
Чо тут думать? ISO 8601 и 400 Bad Request.

[identity profile] no-mad.livejournal.com 2013-10-13 09:50 pm (UTC)(link)
Имхо, миллисекунды рулят.

[identity profile] sdfgh153.livejournal.com 2013-10-14 04:21 am (UTC)(link)
Unixtime же. Самый беспроблемный способ, как мне кажется.

[identity profile] mak-sh.livejournal.com 2013-10-15 09:08 am (UTC)(link)
Передавать дату-время в виде double - модифицированный юлианский день в дробном виде. Можно хранить в любой базе без проблем.
Знакомые баллисты так хранят чтобы не зависеть от формата времени в разных базах.