Тупой и еще тупее
Oct. 13th, 2013 03:04 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Скажите мне пожалуйста, существует ли общепринятый метод передачи дат или даты-времени в параметрах URL для сервиса, например?
Сколько не пишу подобное - практически всегда все сводится к "прибиваем гвоздями ISO8601, парсим строку руками и под каждую задачу заново решаем, что делать с невалидными строками - то ли валится с 4хх, то ли валится с 5хх, то ли игнорировать ошибки, использовать или нет TryParse (если он вообще есть, обычно нету - "у нас всегда все работает, а невалидных дат не бывает") и как возвращать сообщения об ошибках клиенту так, чтобы он мог хоть что-то вменяемое сделать.
Сколько не пишу подобное - практически всегда все сводится к "прибиваем гвоздями ISO8601, парсим строку руками и под каждую задачу заново решаем, что делать с невалидными строками - то ли валится с 4хх, то ли валится с 5хх, то ли игнорировать ошибки, использовать или нет TryParse (если он вообще есть, обычно нету - "у нас всегда все работает, а невалидных дат не бывает") и как возвращать сообщения об ошибках клиенту так, чтобы он мог хоть что-то вменяемое сделать.
no subject
Date: 2013-10-13 12:16 pm (UTC)И не дай бог контрол на странице использует локаль пользователя, а парсится с локалью сервера.
Сайт нормально работает только до 12 числа каждого месяца :)
no subject
Date: 2013-10-13 12:26 pm (UTC)no subject
Date: 2013-10-13 02:35 pm (UTC)Понятно что для сайта лечится просто -показываем в локали пользователя, но везде работаем и храним в локали сервера.
Но для рестфул сервиса или сайта с внешним апи пляски обеспечены.
no subject
Date: 2013-10-13 02:24 pm (UTC)no subject
Date: 2013-10-13 12:19 pm (UTC)no subject
Date: 2013-10-13 12:31 pm (UTC)no subject
Date: 2013-10-13 12:51 pm (UTC)no subject
Date: 2013-10-13 04:35 pm (UTC)no subject
Date: 2013-10-13 12:53 pm (UTC)А ошибки парсинга -- ну, как и в любых других случаях обрабатывать, чем дата/время тут особенны?
no subject
Date: 2013-10-13 02:28 pm (UTC)no subject
Date: 2013-10-13 03:19 pm (UTC)no subject
Date: 2013-10-13 03:41 pm (UTC)Точек отсчёта придумано стопицот, но на моей памяти ни одна не учитывает интересы историков. Когда несколько лет назад у нас на конторе зашла речь об обучающей системе именно по истории, то вообще предлагалась безумная идея собственного формата с распихиванием по битам (чтобы влезть в 4 байта на x86), который в SQL Server хранился просто в int - чтобы обеспечить поиск и сортировку. Это не от хорошей жизни, а от отсутствия альтернатив.
Впрочем, "даты до 1970" касаются не только историков. Даты рождения, например.
no subject
Date: 2013-10-13 04:35 pm (UTC)no subject
Date: 2013-10-13 10:29 pm (UTC)no subject
Date: 2013-10-14 08:39 am (UTC)no subject
Date: 2013-10-13 10:31 pm (UTC)no subject
Date: 2013-10-14 04:25 am (UTC)no subject
Date: 2013-10-13 12:31 pm (UTC)no subject
Date: 2013-10-13 12:41 pm (UTC)И как представлять величины типа "учетная дата" (у нее времени нет, соотвественно, представление с секундами для нее противоречиво")
no subject
Date: 2013-10-13 01:46 pm (UTC)no subject
Date: 2013-10-13 02:20 pm (UTC)no subject
Date: 2013-10-13 02:21 pm (UTC)no subject
Date: 2013-10-14 07:32 am (UTC)Представление _времени_ (с минутами-секундами) — это не проблема вообще, а вот как народ с датами выкручивается, я бы почитал.
no subject
Date: 2013-10-13 01:19 pm (UTC)no subject
Date: 2013-10-13 01:20 pm (UTC)no subject
Date: 2013-10-13 10:32 pm (UTC)no subject
Date: 2013-10-13 12:58 pm (UTC)падать по ситуации, ошибки в лог писать, наиболее серьёзные сбои - уведомлением админу, клиента успокаивать, "мы работаем над этим"
no subject
Date: 2013-10-13 01:12 pm (UTC)Как у Форда, который хотел создать двигатель самым мощным, надёжным и экономичным.
Но у него как-то была глобальная цель сделать автомобиль доступным рядовому гражданину.
А тут выходит, что решение должно подходить под любой будущий абстрактный проект. Не совсем понятно. :-(
no subject
Date: 2013-10-13 01:52 pm (UTC)no subject
Date: 2013-10-13 02:17 pm (UTC)no subject
Date: 2013-10-13 02:19 pm (UTC)no subject
Date: 2013-10-13 03:27 pm (UTC)no subject
Date: 2013-10-13 03:31 pm (UTC)no subject
Date: 2013-10-14 04:30 am (UTC)no subject
Date: 2013-10-14 08:43 am (UTC)Следовательно, годится любой однозначно интерпретируемый формат, который можно минимальными усилиями преобразовать в машинное представление, один из которых я и предложил - пусть и произвольным образом.
Что до "героически решать" - я бы согласился, если бы пробелов, двоеточий и т.д. не могло бы быть в других параметрах запроса. На текстовые поля предустановленных форматов нет по определению.
no subject
Date: 2013-10-13 02:21 pm (UTC)no subject
Date: 2013-10-13 03:34 pm (UTC)Потом "отказоустойчивый" клиент будет долбать неверными данными сервер до посинения.
no subject
Date: 2013-10-13 05:14 pm (UTC)no subject
Date: 2013-10-13 05:25 pm (UTC)no subject
Date: 2013-10-13 05:54 pm (UTC)no subject
Date: 2013-10-13 05:26 pm (UTC)no subject
Date: 2013-10-13 09:47 pm (UTC)no subject
Date: 2013-10-13 09:50 pm (UTC)no subject
Date: 2013-10-14 04:21 am (UTC)no subject
Date: 2013-10-14 09:11 am (UTC)no subject
Date: 2013-10-15 09:08 am (UTC)Знакомые баллисты так хранят чтобы не зависеть от формата времени в разных базах.