- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
import datetime, calendar
def first_last_dopw():
now = datetime.datetime.now()
week = datetime.date(now.year, now.month, now.day).isocalendar()[1] - 1
if week is 0:
day = 31
week = datetime.date(now.year - 1, 12, day).isocalendar()[1]
while week == 1:
day -= 1
week = datetime.date(now.year - 1, 12, day).isocalendar()[1]
d = datetime.date(now.year, 1, 1)
d = d - datetime.timedelta(d.weekday())
dlt = datetime.timedelta(days = (week - 1) * 7)
return d + dlt, d + dlt + datetime.timedelta(days = 6)
def first_last_dopm():
now = datetime.datetime.now()
month = now.month - 1
year = now.year
if month is 0:
year -= 1
month = 12
prev_month = calendar.monthrange(year, month)
else:
prev_month = calendar.monthrange(year, month)
return datetime.date(year, month, 1), datetime.date(year, month, prev_month[1])
guest 27.10.2012 18:17 # +2
Тот самый гость.
7ion 27.10.2012 18:25 # −5
Понял в чем дело - как минимум точек с запятой очень для глаза не хватает.
inkanus-gray 28.10.2012 06:07 # +5
eth0 28.10.2012 17:31 # +5
Если делать язык с нуля, нужно оставить точку с запятой разделителем однострочной записи, плюс, как опционально для конца строки, но советовать не ставить.
И тогда случится счастье.
inkanus-gray 28.10.2012 20:58 # +3
bormand 28.10.2012 21:01 # +1
А вообще питон справляется и без знака, если рвать выражение так, чтобы было понятно, что оно на этом не заканчивается.
bormand 28.10.2012 21:02 # +1
JavaEcmaScript?
guest 28.06.2013 23:25 # 0
wvxvw 28.10.2012 21:55 # 0
О, про Хаскел чет я давно не вспоминал - это говно из той же оперы, только там еще много чего подмешалось, так что на общем фоне почти и не заметно даже.
wvxvw 28.10.2012 22:01 # 0
bormand 27.10.2012 18:50 # 0
Жду порицаний от опытных питонистов.
P.S. Жаль, что в питоньей либе нет функции в духе сишарповской AddMonths(). Недавно ваял короткий скрипт на ASP.Net, там эта функция мне очень помогла в вычислении границ прошлого квартала.
P.P.S. Ideone.com купило машину времени. У них уже 30е число.
USB 27.10.2012 19:20 # +1
Притом на разных языках у них разное число.
guest 27.10.2012 19:24 # 0
Моё: http://ideone.com/2J3j5Z . Слегка нечитабельно, да. Ну и у автора возвращается date, а не datetime. Но сие мелочь есть.
Кстати, код автора не работает так, как описано в тексте:
1. Возвращает даты не для прошлой, а позапрошлой недели.
2. Таки `хитрый вариант' оказался автору при всех потугах с ифами и циклами не по зубам и не обрабатывается как надо. Для первой или второй (не помню точно, проверяйте) недели года возвращаются вроде верные месяц и число, но год остаётся тем же. Т.е. кагбэ возвращаются даты с конца того же года.
Тот самый гость.
bormand 27.10.2012 20:07 # 0
Да, заметил это, когда запустил код на своей машине. А вот на Ideone, из-за их глюка со временем, он показывал правильный ответ ;)
bot 27.10.2012 20:26 # −1
3.14159265 28.10.2012 22:00 # +2
Да. Это очень хитрый вариант. Хоть и случается довольно редко.
А високосные года бывают еще реже - их можно вообще не учитывать. Тем более что следующий ажно через 4 года.
bormand 28.10.2012 22:13 # +1
"А через 4 года я допилю их поддержку, если меня не уволят..." подумал автор кода.
warvariuc 01.04.2013 23:04 # 0
Атас! http://stackoverflow.com/a/2988271/248296