Войти

Показать полную графическую версию : [решено] Определение последнего числа масяца


TERMINAL
13-04-2011, 17:00
Добрый день !
Помогите определить последнее число текущего месяца, т.е. 31 или 30 или вообще 28-29.
Заранее спс.

ferget
13-04-2011, 22:45
не понятен вопрос
число дней в месяце постоянно каждый год, ну кроме февраля
так что switch+ проверка на високосный

madmasles
13-04-2011, 23:37
TERMINAL,
$iLastDay = _Last_Day_Month()
MsgBox(64, @error, $iLastDay)

Func _Last_Day_Month($i_Month = @MON, $i_Year = @YEAR)
Local $a_LastDay[13] = [12, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], $i_LastDay
$i_Month = Int($i_Month)
$i_Year = Int($i_Year)
If $i_Month < 1 Or $i_Month > 12 Or $i_Year < 0 Then Return SetError(1, 0, -1)
$i_LastDay = $a_LastDay[$i_Month]
If $i_Month = 2 Then
If Not Mod($i_Year, 4) Then
$i_LastDay += 1
EndIf
EndIf
Return SetError(0, 0, $i_LastDay)
EndFunc ;==>_Last_Day_Month

Creat0R
14-04-2011, 00:37
madmasles,
А зачем велосипед изобретать, есть же _DateDaysInMonth, пример из справки:

#include (http://www.autoitscript.com/autoit3/docs/keywords.htm##include) <Date.au3>

$iDays = _DateDaysInMonth (http://dundats.mvps.org/help/html/libfunctions/_datedaysinmonth.htm)( @YEAR (http://www.autoitscript.com/autoit3/docs/macros.htm#@year),@MON (http://www.autoitscript.com/autoit3/docs/macros.htm#@mon) )
MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)( 4096, "Days in Month", "This month has " & String (http://www.autoitscript.com/autoit3/docs/functions/String.htm)( $iDays ) & " days in it." )

madmasles
14-04-2011, 01:26
А зачем велосипед изобретать, есть же _DateDaysInMonth »А в ней ограничение на год до 9999 года. Вдруг TERMINAL захочет узнать про 10000 год и дальше? :)

Я просто забыл про нее, когда-то ведь ее использовал... склероз.

Creat0R
14-04-2011, 02:29
А в ней ограничение на год до 9999 года. Вдруг TERMINAL захочет узнать про 10000 год и дальше? »
К этому году уже будет перерасчёт календаря, и числа могут смещаться, т.ч ограничений никаких нет.

Я просто забыл про нее »
Ну обычно прежде чем написать какую то функцию, не помешает просмотреть список готовых функций на данную тему в справке (можно и в SciTE набрать _Date а дальше появится список доступных функций).

TERMINAL
14-04-2011, 09:39
А в ней ограничение на год до 9999 года. Вдруг TERMINAL захочет узнать про 10000 год и дальше? »
)) Спасибо, но я столько не проживу, тем более что задача была поставлена на ТЕКУЩИЙ МЕСЯЦ.
Ну обычно прежде чем написать какую то функцию, не помешает просмотреть список готовых функций на данную тему в справке (можно и в SciTE набрать _Date а дальше появится список доступных функций). »
Как бы это относится и ко мне, но потерял русское описание новой версии Autiit, которое раньше давал madmasles, поэтому после изобретений велосипедов и отсутствия данной функции в старой справке решил задать вопрос на форуме, которой будет полезен не только мне. Если не тяжело, дайте плз ссылочку на последнее русское описание. Всем спс.

madmasles
14-04-2011, 11:58
потерял русское описание новой версии Autiit »
Если вы имеете в виду эту тему (http://forum.oszone.net/thread-143695-22.html), то она самая первая закрепленная тема, только там нет описаний UDF функций.но я столько не проживу »Я тоже, но мне принципиально важно знать, в какой день недели, исходя из сегодняшнего исчисления, мои потомки будут праздновать мой день рождения в 12011 году. :teeth:

TERMINAL
14-04-2011, 19:27
Если вы имеете в виду эту тему, то она самая первая закрепленная тема, только там нет описаний UDF функций. »
Не не эту тему имел ввиду, ну может будет свободное время то порыскаю в поисках самого описания и описаний UDF функций...




© OSzone.net 2001-2012