1

Я хочу определить пользовательский язык с моими собственными настройками календаря. В этой локали мы устанавливаем указанный год как первый год. Например, если я определю en_UNIX.UTF-8, я бы хотел установить AD 1970 как год 1 и AD 1970 как год 2.

Есть ли способ сделать это в Linux/BSD? Я просмотрел файлы локали системы и обнаружил, что они определяют только первый день недели, валюту и т.д., Кроме первого года календаря ...

1 ответ1

0

Использование григорианского календаря жестко запрограммировано в glibc: https://github.com/rbdixon/glibc/blob/master/time/offtime.c#L58.

Таким образом, все, что использует подпрограммы библиотеки C ("system") - gmtime_r , localtime_r и т.д. - для преобразования между форматом секунд с начала эпохи и разбитой даты, будет придерживаться "стандартного" календаря (365 дней в год, формула григорианского високосного года, 7 дней в неделю ...).

Для кода, который вы пишете самостоятельно, вы можете использовать библиотеки проекта ICU и предоставить свою собственную негергорианскую спецификацию календаря в формате XML Unicode Common Locale Data Repository.

Я уверен, что ты не хочешь этого делать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .