Как определить первый день недели в питоне - PullRequest
1 голос
/ 24 ноября 2010

Исходя из локали, мне нужно найти первый день недели (воскресенье / понедельник). В JAVA я бы сделал:

Calendar FR_cal = Calendar.getInstance(Locale.FRANCE);
Calendar CA_cal = Calendar.getInstance(Locale.CANADA);

DateFormatSymbols dfs = new DateFormatSymbols();
String weekdays[] = dfs.getWeekdays();

System.out.println(weekdays[JO_cal.getFirstDayOfWeek()]);
System.out.println(weekdays[FR_cal.getFirstDayOfWeek()]);

Как мне это сделать на python?

Ответы [ 4 ]

6 голосов
/ 24 ноября 2010

Я мог только понять, как это сделать с библиотекой Babel . Это доступно через easy_install.

>>> import babel
>>> locale = babel.Locale('en', 'US')
>>> locale.first_week_day
6
>>> locale.days['format']['wide'][locale.first_week_day]
u'Sunday'

оказывается, что следующее не работает , поскольку Нейт был достаточно любезен, чтобы указать на это. Если кто-то знает, почему, пожалуйста, напишите и ответьте, показывая, как это сделать правильно. Это должно быть выполнено со стандартной библиотекой.

Если вам нужен номер дня, вы можете использовать calendar.LocalTextCalendar.

>>> import calendar
>>> c = calendar.LocaleTextCalendar(locale='de_DE') # locale=('en_US', 'UTF8') fails too.
>>> c.firstweekday
0

Существует также метод iterweekdays.

>>> list(c.iterweekdays())
[0, 1, 2, 3, 4, 5, 6]
1 голос
/ 24 ноября 2010

Эта функциональность, кажется, отсутствует в стандартной библиотеке Python вплоть до (включая) Python 3.1.2 включительно.


Некоторые подсказки:

Поскольку информация об этом обычно хранится вместе с данными системы l10n (в мире GNU, который, вероятно, будет определен языковым стандартом в /usr/share/i18n/locales/), моей первой реакцией было использование что-то вроде locale.nl_langinfo(), нок сожалению, в модуле локали нет ничего похожего на locale.FIRST_WEEKDAY: - (

Помимо упоминания Babel lib от aaronasterling, я нашел этот пример решения дляименованная проблема, используемая в апплете GNOME. Также стоит отметить сопровождающее сообщение в блоге .

0 голосов
/ 24 мая 2013

Посмотрите на модуль календаря.Может пригодиться для этого!

0 голосов
/ 24 ноября 2010

Календари во многих европейских странах, в частности, теперь следуют решению ISO, начиная неделю в понедельник. В расписаниях авиакомпаний также указаны дни с понедельника 1, вторник 2, среда 3 и т. Д.

Выше указано, что понедельник всегда должен быть первым днем ​​недели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...