Что нового

[Время, дата] Как бы мне получить номер предыдущей недели в месяце, и не только

akoulev

Новичок
Сообщения
166
Репутация
2
Версия AutoIt: 3.
3.3.6.1
Описание:
Как бы мне получить номер предыдущей недели в месяце?
Примечания:
Дубль. Предыдущее сообщение прочли более, чем 300 раз - без ответа. :smile:

"Сделайте всё за меня” - "Только бесплатные заказы": как же мне это нравится!!! :laugh:

Ну-с, начнём мы с того, что в месяце бывает.... 6 недель. Не знаю, кто-как, а я обалдел. :smile:
Неполных, разумеется. Если 1-й день месяца - последний день недели, - и, при этом, в месяце ХОТЯ БЫ 30 дней - то на второй день месяца уже начинается 2-я неделя, и при этом раскладе 30-го числа будет начало 6-й недели.


Итак: неделя (в данной задаче) начинается ...с воскресенья.
Сама исходная диспозиция задачи такова: вот я пришёл на работу в понедельник (а "закручусь" - так и до пятницы могу 'протянуть') и запускаю скрипт-анализатор траффика "минувших дней" ;).
Что требуется (сама задача) : исходя из текущего числа, нужно вычислить 1-й и последний дни (число) предыдущей недели, ну и, собственно, сам номер ПРЕДЫДУЩЕЙ недели в месяце.
Развивая мысль: с числом даты начала предыдущей недели, нужно передавать время: 00ч.00мин.00 сек.; а с числом даты окончания предыдущей недели, нужно передавать время: 23ч.59мин.59 сек.;
Да, насчёт 6-й недели (не к ночи будь помянута) - пусть ейные дни входят в 1-ю неделю следующего месяца. Ну и обратная сторона медали: если скрипт запускается в понедельник, 1-го числа - то на выходе нужны данные (1-й и последний дни (число) предыдущей недели, ну и, собственно, сам номер ПРЕДЫДУЩЕЙ недели в месяце.) по 5-й неделе предыдущего месяца.
С размещением результатов в различных каталогах (1 неделя; 2 неделя... 5 неделя), - полагаю, справлюсь сам. :smile:
Моя наработка:
Код:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.4.0
 Author:         myName

 Script Function:
	Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

;#include <GUIConstants.au3>
#include <date.au3>
;#include <GuiMonthCal.au3>
;[email protected]
$Day=03
;MsgBox(0,"The decmial $var is:", $Day, 2)
$WeekDay= @WDAY
;MsgBox(0,"The decmial $var is:", $WeekDay, 2)
$Mon= @MON
;MsgBox(0,"The decmial $var is:", $Mon, 2)
;MsgBox(0,"The decmial $var is:", "Число: " & $Day & @CR & @CR _
;& "Месяц: " & " " & $Mon & @CR & @CR & _
;"День недели: " & $WeekDay, 2)
$WEE=$Day/7
;MsgBox(0,"The decmial $var is:", "Неделя: " & $WEE & @CR & @CR & "Сухая неделя: " & " " & Int ($WEE)  _
;& @CR & @CR & "Предыдущая неделя: " & " " & (Int ($WEE))-1  & @CR & @CR & "Месяц: " & $Mon, 5)
If (Int ($WEE))-1<0 Then
	; первая неделя
	MsgBox(0,"The decmial $var is:", "Первая Неделя: " & $WEE & @CR & @CR _
& "Сухая неделя: " & " " & Int ($WEE)  & @CR & @CR & _
"Предыдущая неделя: " & " " & (Int ($WEE))-1  & @CR & @CR & _
"Месяц: " & $Mon-1, 65)
$MonthLength=

Else
	; _НЕ_первая неделя
	MsgBox(0,"The decmial $var is:", "2,3,4,5,6 Неделя: " & $WEE & @CR & @CR _
& "Сухая неделя: " & " " & Int ($WEE)  & @CR & @CR & _
"Предыдущая неделя: " & " " & (Int ($WEE))-1  & @CR & @CR & _
"Месяц: " & $Mon, 5)
	EndIf
Exit

Главный вопрос: если сегодня число менее, чем 7-е, - то снимаемая за ПРЕДЫДУЩУЮ неделю статистика, ясен пень, относится к предыдущему месяцу. Как же вычислить "параметры" последней недели: 5-я она? 4-я? И, исходя из этого вычисления, надо тарификационные данные складывать в соответствующий каталог ибн директорию. Видимо, тут нужно вычислять количество дней в предыдущем месяце - как сделать хотя бы это???
Кто может помочь - помогите, пожалуйста!
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
akoulev
Вот, что у меня получилось...

Код:
; НАЧАЛО

; Понедельник и воскресение предыдущей недели

 #include "date.au3"

 $YEAR=2010
 $MON=04
 $MDAY=23

 $NDW=_DateToDayOfWeek($YEAR,$MON,$MDAY)

 If $NDW=1 Then $NDW=8

 $M=_DateAdd("D",-7-($NDW-2),$YEAR&"/"&$MON&"/"&$MDAY)
 $V=_DateAdd("D",-7+(8-$NDW),$YEAR&"/"&$MON&"/"&$MDAY)

 MsgBox(0,"","СГ:"&$YEAR&"/"&$MON&"/"&$MDAY&" ПН:"&$M&" ВС:"&$V)

; КОНЕЦ
 
Верх