如何在python中确定一周的第一天

时间:2010-11-24 10:21:39

标签: python date calendar

根据区域设置,我需要找到一周的第一天(星期日/星期一) 在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 个答案:

答案 0 :(得分:6)

我只能弄清楚如何使用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'

证明以下内容不起作用,因为Nate很友好地指出。 如果有人知道原因,请发布并回答如何正确操作。这应该适用于标准库。

如果您只想要当天的号码,那么您可以使用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 :(得分:1)

这个功能似乎从python标准库中缺少,包括(至少)Python 3.1.2。


一些线索:

由于关于此的信息通常与系统l10n数据一起存储(在GNU世界中可能是/usr/share/i18n/locales/中的语言环境def),我的第一反应是使用类似locale.nl_langinfo()的内容,但是遗憾的是,语言环境模块中没有类似locale.FIRST_WEEKDAY的内容: - (

除了aaronasterling提到的 Babel lib之外,我发现this example of a solution用于GNOME applet中使用的命名问题。另外值得注意的是the accompanying blog post

答案 2 :(得分:0)

特别是,许多欧洲国家的日历现在都遵循ISO决定,从星期一开始。航空公司时刻表也将星期一的天数分为1,星期二为2,星期三为3,等等。

以上陈述星期一应始终是一周的第一天。

答案 3 :(得分:0)

查看日历模块。可能会派上用场!