LINUX.ORG.RU

Что делать со страными (без «т») US/UK форматами при парсинге и при локализации? Что не так со временем?

 , , , ,


0

1

P.S. Тред про локализацию и библиотеки парсинга с автоконвертацией, а не про батхёрт автора.

FUUUUUUU, ЛОР.

У меня начинается дискомфорт пониже спины, когда я пытаюсь парсить сообщения с US/UK сайтов, которые содержат дату и время.

Существуют ли библиотеки, которые:
а) Могут находить дату и время (причём возможно только одно имеется) из текста во всех форматах
б) Могут приводить их в стандартный вид (либо по ISO 8601:2004, либо по EUR стандартам)
?

И с сталкивались ли Вы с проблемами, делая приложения для иностранных заказчиков? Или формат 24.01.2029 19:33:71 они вполне понимают? Имелись ли какие-то проблемы не со временем и датами (с весами, температурой, длиной и т.д.)?

А теперь нетехнические подробности с элементами батхёрта (слабонервным и модераторам читать не рекомендуется):
Внезапно, вместо нормального DD.MM.YYYY можно увидеть MM-DD-YYYY и даже MM/DD/YYYY. Но это ещё что: время записывается в формате 12:00 AM/PM.
Мало того, погуглив, я обнаружил, что существует минимум пять форматов записи дат http://www.tetran.ru/SiteContent/Details/25 и аж три формата записи времени.
Это не считая инженерных форматов https://yandex.ru/support/partnermarket/export/date-format.xml и внутренних форматов хранения времени (типа UNIX-времени).

Если копнуть проблему дальше, то оказывается, что существуют не просто разные форматы ЗАПИСИ времени, то и разные варианты измерения времени! https://ru.wikipedia.org/wiki/Всемирное_координированное_время https://ru.wikipedia.org/wiki/Всемирное_время https://ru.wikipedia.org/wiki/Международное_атомное_время

Я уже молчу про ситуацию, когда Вам надо будет парсить или выводить длину (в US/UK аршиноподобная система измерения, у военных вообще своя) или вес. С температурой уже проще.

Использование таких древних (и таких важных!) стандартов и отсутствие единых стандартов (учитывая наличие системы СИ) смотрится ещё большим анахронизмом, чем иероглифы, вязь, ручной труд, бекапы tar'ом по крону, механические наручные часы и письмо в обратную сторону вместе взятые.

☆☆☆

Последнее исправление: ktulhu666 (всего исправлений: 2)

выдавливай все заморские форматы! Они же нас выдавливают!

darkenshvein ★★★★★
()

ISO 8601

Вот он, единственный стандарт даты/времени. Все остальное — местечковые гадости, на которые нужно тратить ровно столько усилий сколько уйдет на плевок в карму и подзатыльник автору API.

Локализация — вчерашний день, мы за глобализацию!

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

ISO 8601

Вот он, единственный стандарт даты/времени. Все остальное — местечковые гадости, на которые нужно тратить ровно столько усилий сколько уйдет на плевок в карму и подзатыльник автору API.
Локализация — вчерашний день, мы за глобализацию!

ППКС.

ТС, твоё сраное dd.mm.yyyy ничем не лучше их сраного mm/dd/yyyy. Только yyyy-mm-dd, только ISO!

Stil ★★★★★
()
Ответ на: комментарий от ktulhu666

Используй API сайтов.

А если нет?

Не используй </thread>

t184256 ★★★★★
()
Ответ на: комментарий от ktulhu666

А если нет?

Тогда не воруй данные.

И если дата не в XML

Какая разница?

или не в ISO 8601 или UNIX-time?

Приедь к разработчикам сайта и отрежь им руки.

Deleted
()

Так и живем

    private static final DateTimeParser[] parsers = {
        ISODateTimeFormat.date().getParser(),
        ISODateTimeFormat.dateTime().getParser(),
        ISODateTimeFormat.dateHourMinuteSecondMillis().getParser(),
        ISODateTimeFormat.dateTimeNoMillis().getParser(),
        ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC).getParser(),
        DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss").getParser()
    };

ThePretender
()

Внезапно, вместо нормального DD.MM.YYYY можно увидеть MM-DD-YYYY и даже MM/DD/YYYY. Но это ещё что: время записывается в формате 12:00 AM/PM.
Мало того, погуглив, я обнаружил, что существует минимум пять форматов записи дат http://www.tetran.ru/SiteContent/Details/25 и аж три формата записи времени.
Это не считая инженерных форматов https://yandex.ru/support/partnermarket/export/date-format.xml и внутренних форматов хранения времени (типа UNIX-времени).

Если копнуть проблему дальше, то оказывается, что существуют не просто разные форматы ЗАПИСИ времени, то и разные варианты измерения времени! https://ru.wikipedia.org/wiki/Всемирное_координированное_время https://ru.wikipedia.org/wiki/Всемирное_время https://ru.wikipedia.org/wiki/Международное_атомное_время

С разморозкой.

h578b1bde ★☆
()

Про l10n и миллион библиотек, который это делает, не слышал?

holuiitipun
()

Существуют ли библиотеки, которые:
а) Могут находить дату и время (причём возможно только одно имеется) из текста во всех форматах

Существует ли универсальный regex для этого? Наверное, почему бы и нет.

б) Могут приводить их в стандартный вид (либо по ISO 8601:2004, либо по EUR стандартам)

Могут, если ты им укажешь исходную локаль. Потому что эвристикой она гарантированно однозначно не определяется в любом случае.

asaw ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.