<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: Вычисление даты]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7329</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7329&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: Вычисление даты».]]></description>
		<lastBuildDate>Sun, 29 Jul 2012 07:58:30 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62117#p62117</link>
			<description><![CDATA[<p><strong>alexii</strong><br />посмотрите пожалуйста, сделали вот такой код:<br /></p><div class="codebox"><pre><code>&#039; 1) количество рабочих дней читается из таблицы Б/Д - qdfOrders поле &quot;ExecutionTime&quot;, тип целое.
&#039; 2) выходные и праздничные дни - в таблице tblHolidays, заполение на совести оператора.

Option Explicit

Const adOpenStatic     = 3
Const adLockOptimistic = 3

Dim strDatabase
Dim lngID

Dim objFSO
Dim objConnection
Dim objRecordset

Dim dtStartDate
Dim dtEndDate
Dim lngCount

Dim prevLocale


If WScript.Arguments.Count = 2 Then
    strDatabase = Mid(WScript.Arguments(0), 2)
    lngID = Mid(WScript.Arguments(1), 2)
    
    Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
    
    If objFSO.FileExists(strDatabase) Then
        prevLocale = SetLocale()
        SetLocale(&quot;en-us&quot;)
        Set objConnection = CreateObject(&quot;ADODB.Connection&quot;)
        Set objRecordset  = CreateObject(&quot;ADODB.Recordset&quot;)
        objConnection.Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot;&amp; strDatabase &amp;&quot;;&quot;
        
        With objRecordset
            .Open &quot;SELECT * FROM qdfOrders WHERE ID = &quot; &amp; lngID &amp; &quot;&quot;, objConnection, adOpenStatic, adLockOptimistic
            dtStartDate = .Fields(&quot;OrderDate&quot;).Value
        lngCount    = .Fields(&quot;ExecutionTime&quot;).Value 
        .Close
            
            .Open _
                &quot;SELECT * FROM tblHolidays&quot;&amp; _
                &quot; WHERE HolidayDate BETWEEN #&quot;&amp; dtStartDate &amp;&quot;#&quot;&amp; _
                &quot; AND #&quot;&amp; DateAdd(&quot;d&quot;, lngCount*2+1, dtStartDate) &amp;&quot;#&quot;, _
                objConnection, adOpenStatic, adLockOptimistic
            
            dtEndDate = DateAdd(&quot;d&quot;, lngCount, dtStartDate)
            
            .Filter  = &quot;HolidayDate&gt;=#&quot;&amp; dtStartDate &amp;&quot;# AND HolidayDate&lt;=#&quot;&amp; dtEndDate &amp;&quot;#&quot; 
            lngCount = .RecordCount
            
            Do While lngCount&gt;0
                dtStartDate = DateAdd(&quot;d&quot;, 1, dtEndDate)
                dtEndDate   = DateAdd(&quot;d&quot;, lngCount, dtEndDate)
                .Filter  = &quot;HolidayDate&gt;=#&quot;&amp; dtStartDate &amp;&quot;# AND HolidayDate&lt;=#&quot;&amp; dtEndDate &amp;&quot;#&quot;
                lngCount = .RecordCount
            Loop
            
            .Close
        End With
        
        objConnection.Execute &quot;UPDATE qdfOrders SET DoneDate=#&quot; &amp; dtEndDate &amp; &quot;# WHERE ID=&quot; &amp; lngID
        
        objConnection.Close
        Set objRecordset  = Nothing
        Set objConnection = Nothing
        SetLocale(prevLocale)
    Else
        WScript.Echo &quot;Database file [&quot; &amp; strDatabase &amp; &quot;] not found&quot;
    End If
    
    Set objFSO = Nothing
Else
    WScript.Echo &quot;Usage from toolbar on [Склад и торговля]:&quot;
    WScript.Echo &quot;&quot; &amp; WScript.ScriptName &amp; &quot; /[CurrentDB] /[ID]&quot;
End If

WScript.Quit 0</code></pre></div><p>не сработал...<br />Поле &quot;Time&quot; переименовал в &quot;ExecutionTime&quot;<br />пробовал вешать исполнение как на отдельную кнопку, так и на условие для поля таблицы...</p>]]></description>
			<author><![CDATA[null@example.com (NecroTYN)]]></author>
			<pubDate>Sun, 29 Jul 2012 07:58:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62117#p62117</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61857#p61857</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Попробую посмотреть.</p></blockquote></div><p>alexii посмотрите пожалуйста</p>]]></description>
			<author><![CDATA[null@example.com (NecroTYN)]]></author>
			<pubDate>Sat, 21 Jul 2012 08:57:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61857#p61857</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61817#p61817</link>
			<description><![CDATA[<p>Люди грамотные, помогите пожалуйста - ну очень надо !!!</p>]]></description>
			<author><![CDATA[null@example.com (NecroTYN)]]></author>
			<pubDate>Fri, 20 Jul 2012 05:46:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61817#p61817</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61679#p61679</link>
			<description><![CDATA[<p>Второй и четвертый пункт - это одно и то же<br /> </p><div class="quotebox"><blockquote><p>А чем сие поможет? Насколько я понял, данный триггер срабатывает, когда мы покидаем запись.</p></blockquote></div><p>покидаем или изменяем, насколько я понял прога хватает последние введенные значения<br /></p><div class="quotebox"><blockquote><p>Не очень представляю себе, как это может выглядеть.</p></blockquote></div><p>так и выглядит, сначала заполняем форму, при нажатии &quot;ОК&quot; срабатывает тригер на запуск скрипта, который в свою очередь берет из указанных нами полей и таблиц нужные ему данные... Триггер срабатывает после ввода данных</p>]]></description>
			<author><![CDATA[null@example.com (NecroTYN)]]></author>
			<pubDate>Tue, 17 Jul 2012 16:28:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61679#p61679</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61678#p61678</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Вызов скрипта можно повесить на &quot;При добавлении и изменении записи&quot; для поля &quot;AddTime&quot;... через меню &quot;Триггеры&quot;</p></blockquote></div><p>А чем сие поможет? Насколько я понял, данный триггер срабатывает, когда мы покидаем запись.</p><div class="quotebox"><blockquote><p>Параметр &quot;количество рабочих дней&quot; тоже не постоянный и меняется оператором - правда не очень часто</p></blockquote></div><p>Что это за параметр? Где он находится?</p><div class="quotebox"><blockquote><p>...а если предположить такую схему работы:<br /> вводим сначала раб. дни, затем ставим дату, жмем &quot;ок&quot; на форме.</p></blockquote></div><p>Не очень представляю себе, как это может выглядеть.</p><div class="quotebox"><blockquote><p>В вышеприведенном вами коде срок изготовления является неизменным, а нужно сделать чтоб менялся оператором в поле &quot;Time&quot; of qdfOrders...</p></blockquote></div><p>Попробую посмотреть.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 17 Jul 2012 15:55:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61678#p61678</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61488#p61488</link>
			<description><![CDATA[<p><strong>alexii</strong><br />В вышеприведенном вами коде срок изготовления является неизменным, а нужно сделать чтоб менялся оператором в поле &quot;Time&quot; of qdfOrders...<br />?????</p>]]></description>
			<author><![CDATA[null@example.com (NecroTYN)]]></author>
			<pubDate>Wed, 11 Jul 2012 10:36:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61488#p61488</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61466#p61466</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Вызов скрипта вешаете на кнопку на панели инструментов для формы «Заказы» в виде:</p></blockquote></div><p>Вызов скрипта можно повесить на &quot;При добавлении и изменении записи&quot; для поля &quot;AddTime&quot;... через меню &quot;Триггеры&quot;<br />Параметр &quot;количество рабочих дней&quot; тоже не постоянный и меняется оператором - правда не очень часто</p><p>...а если предположить такую схему работы:<br />вводим сначала раб. дни, затем ставим дату, жмем &quot;ок&quot; на форме. Дальше должно происходить так: запускается скрипт, берется кол-во раб. дней и дата, все это обрабатывается и выдается результат в поле AddTime</p><div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>не учитывается возможный перенос выходных дней с субботы и воскресенья на будние дни по решению «больших голов». Может быть, сделать так:</p></blockquote></div><p>Думаю можно и так</p><p><strong>?????</strong></p>]]></description>
			<author><![CDATA[null@example.com (NecroTYN)]]></author>
			<pubDate>Mon, 09 Jul 2012 16:54:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61466#p61466</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61465#p61465</link>
			<description><![CDATA[<p>Спасибо, ясно.</p><p>К сожалению, я не очень представляю себе, как сие можно разумно сделать:</p><p>1. В «Значении по умолчанию»/«Условии на значение» для поля автор не даёт возможности использовать такой обычный и типичнейший для Microsoft Access механизм, как вызов пользовательской функции VBA.<br />2. Вызов скрипта по различным триггерам: триггер срабатывает <em>после</em> смены текущей записи (даже при триггере на изменение поля!).<br />3. Вызов по кнопке: само поле в форме заполнить нельзя, только таблицу/запрос (и, как тут принято говорить, через <em>жёппу</em>). Форма обновляется когда захочет и если захочет. А может и вовсе не обновиться. Вот так.</p><p>Запрет на 1) выглядит очень и очень странным. Либо я «не умею его готовить». Невозможность вызова скрипта в стандартном для WSH варианте «/Поле:[Поле]», а только и исключительно в нелепом виде «/[<em>Поле</em>]» выглядит и вовсе полной ахинеей.</p><p>В общем, наименьшее из зол таково:<br /></p><div class="codebox"><pre><code>Option Explicit

Const adOpenStatic     = 3
Const adLockOptimistic = 3

Dim strDatabase
Dim lngID

Dim objFSO
Dim objConnection
Dim objRecordset

Dim dtStartDate
Dim dtEndDate
Dim lngCount

Dim prevLocale


If WScript.Arguments.Count = 2 Then
    strDatabase = Mid(WScript.Arguments.Item(0), 2)
    lngID = Mid(WScript.Arguments.Item(1), 2)
    
    Set objFSO        = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
    Set objConnection = WScript.CreateObject(&quot;ADODB.Connection&quot;)
    Set objRecordset  = WScript.CreateObject(&quot;ADODB.Recordset&quot;)
    
    If objFSO.FileExists(strDatabase) Then
        objConnection.Open &quot;Provider = Microsoft.Jet.OLEDB.4.0; &quot; &amp; _
            &quot;Data Source = &#039;&quot; &amp; strDatabase &amp; &quot;&#039;&quot;
        
        With objRecordset
            .Open &quot;SELECT * FROM qdfOrders WHERE ID = &quot; &amp; CStr(lngID) &amp; &quot;&quot;, objConnection, adOpenStatic, adLockOptimistic
            dtStartDate = CDate(.Fields.Item(&quot;OrderDate&quot;).Value)
            .Close
            
            .Open &quot;SELECT * FROM tblHolidays&quot;, objConnection, adOpenStatic, adLockOptimistic
            
            dtEndDate = dtStartDate
            lngCount = 0
            
            Do Until lngCount &gt;= 21
                dtEndDate = DateAdd(&quot;d&quot;, 1, dtEndDate)
                
                Select Case WeekdayName(Weekday(dtEndDate))
                    Case &quot;суббота&quot;, &quot;воскресенье&quot;
                    
                    Case Else
                        prevLocale = SetLocale(&quot;en-us&quot;)
                        .Filter = &quot;HolidayDate = #&quot; &amp; dtEndDate &amp; &quot;#&quot;
                        SetLocale(prevLocale)
                        
                        If .RecordCount = 0 Then
                            lngCount = lngCount + 1
                        End If
                End Select
            Loop
            
            .Close
        End With
        
        prevLocale = SetLocale(&quot;en-us&quot;)
        objConnection.Execute &quot;UPDATE qdfOrders SET DoneDate = #&quot; &amp; dtEndDate &amp; &quot;# WHERE ID = &quot; &amp; CStr(lngID) &amp; &quot;&quot;
        SetLocale(prevLocale)
        
        objConnection.Close
    Else
        WScript.Echo &quot;Database file [&quot; &amp; strDatabase &amp; &quot;] not found&quot;
    End If
    
    Set objRecordset  = Nothing
    Set objConnection = Nothing
    Set objFSO        = Nothing
Else
    WScript.Echo &quot;Usage from toolbar on [Склад и торговля]:&quot;
    WScript.Echo &quot;&quot; &amp; WScript.ScriptName &amp; &quot; /[CurrentDB] /[ID]&quot;
End If

WScript.Quit 0</code></pre></div><p>Вызов скрипта вешаете на кнопку на панели инструментов для формы «Заказы» в виде:<br /></p><div class="codebox"><pre><code>&lt;Путь&gt;\Имя скрипта.vbs /[CurrentDB] /[ID]</code></pre></div><p>где «&lt;Путь&gt;\Имя скрипта» — путь и имя к сохранённому скрипту. Задали «Дату заказа» — нажали кнопку. И молитесь, чтобы форма обновилась.</p><p>Таблица «tblHolidays» аналогична по формату выше описанной. Создаёте её в базе данных «.mdb» «Склад и торговля» и заполняете ручками. Алгоритм, по-хорошему, надо менять: сейчас никак не учитывается возможный перенос выходных дней с субботы и воскресенья на будние дни по решению «больших голов». Может быть, сделать так:</p><p>1. Заполняем «tblHolidays» списком суббот, воскресений, известных праздников N-ного года.<br />2. Посему из алгоритма выкидываем проверку на субботы и воскресенья.<br />3. Выправление заполненного списка до реальности (перенос выходных дней с субботы и воскресенья на будние дни) оставляем на совести оператора.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 09 Jul 2012 15:01:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61465#p61465</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61460#p61460</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Как сделаете, так и будет передаваться.</p></blockquote></div><p>а как правильно сделать ??? База данных используется программой написанной на T-SQL - <a href="http://www.simple-soft.ru/ProductsCount.htm">http://www.simple-soft.ru/ProductsCount.htm</a></p><div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>У меня есть подозрение, что Вам нужен не VBScript, а VBA. Так?</p></blockquote></div><p>...именно VBScript</p>]]></description>
			<author><![CDATA[null@example.com (NecroTYN)]]></author>
			<pubDate>Mon, 09 Jul 2012 11:21:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61460#p61460</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61459#p61459</link>
			<description><![CDATA[<p>Как сделаете, так и будет передаваться.</p><p>У меня есть подозрение, что Вам нужен не VBScript, а VBA. Так?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 09 Jul 2012 11:13:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61459#p61459</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61457#p61457</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p><strong>NecroTYN</strong>, ничего не понял.</p></blockquote></div><p>извините, если проще то каким образом передается в скрипт дата приема заказа-09.07.2012 и количество раб. дней-21 <br />просто в таблице еще имеются поля формата Дата</p>]]></description>
			<author><![CDATA[null@example.com (NecroTYN)]]></author>
			<pubDate>Mon, 09 Jul 2012 11:03:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61457#p61457</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61454#p61454</link>
			<description><![CDATA[<p><strong>NecroTYN</strong>, ничего не понял.</p><p><span style="color: Green">Не используйте повторяющиеся знаки препинания. Сие только ухудшает восприятие.</span></p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 09 Jul 2012 10:26:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61454#p61454</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61453#p61453</link>
			<description><![CDATA[<p>Спасибо !!!<br />Но осталось еще пару вопросов...<br />Насколько я понимаю это код скрипта *.vbs, интересует следующее, а именно как происходит добавление известных параметров в скрипт ???<br />т.е. у меня есть Б/Д с множеством различных таблиц, включая tblHoliday и tblOrders, в которой имеются поля &quot;Добавлено&quot;- AddTime, &quot;Срок изготовления&quot;- Time(считается в рабочих днях) и &quot;Дата выдачи заказа&quot; - EndTime... и еще много других...<br />...просто в коде я не знаю где эти поля...</p>]]></description>
			<author><![CDATA[null@example.com (NecroTYN)]]></author>
			<pubDate>Mon, 09 Jul 2012 09:15:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61453#p61453</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61448#p61448</link>
			<description><![CDATA[<p>Тогда пожалуйста:<br /></p><div class="codebox"><pre><code>Option Explicit

Const adOpenStatic     = 3
Const adLockOptimistic = 3

Dim dtStartDate
Dim dtEndDate
Dim lngCount

Dim objConnection
Dim objRecordset

Dim prevLocale


Set objConnection = CreateObject(&quot;ADODB.Connection&quot;)
Set objRecordset  = CreateObject(&quot;ADODB.Recordset&quot;)

objConnection.Open &quot;Provider = Microsoft.Jet.OLEDB.4.0; Data Source = &#039;E:\Песочница\0158\Приложение Microsoft Office Access.mdb&#039;&quot;
objRecordset.Open &quot;SELECT * FROM Holidays&quot;, objConnection, adOpenStatic, adLockOptimistic

dtStartDate = CDate(&quot;09.07.2012&quot;)

WScript.Echo FormatDateTime(dtStartDate, vbLongDate)

dtEndDate = dtStartDate
lngCount = 0

Do Until lngCount &gt;= 21
    dtEndDate = DateAdd(&quot;d&quot;, 1, dtEndDate)
    
    Select Case WeekdayName(Weekday(dtEndDate))
        Case &quot;суббота&quot;, &quot;воскресенье&quot;
            
        Case Else
            prevLocale = SetLocale(&quot;en-us&quot;)
            objRecordset.Filter = &quot;HolidayDate = #&quot; &amp; dtEndDate &amp; &quot;#&quot;
            SetLocale(prevLocale)
            
            If objRecordset.RecordCount = 0 Then
                lngCount = lngCount + 1
            End If
    End Select
Loop

objRecordset.Close
objConnection.Close

WScript.Echo FormatDateTime(dtEndDate, vbLongDate)

Set objRecordset  = Nothing
Set objConnection = Nothing

WScript.Quit 0</code></pre></div><p>Я создал в базе данных «E:\Песочница\0158\Приложение Microsoft Office Access.mdb» таблицу «Holidays» из двух полей — идентификатор «ID» и дата/время «HolidayDate», добавив в неё для примера подряд пять дней праздников:<br /></p><div class="codebox"><pre><code>ID    HolidayDate
1    20.07.2012
2    21.07.2012
3    22.07.2012
4    23.07.2012
5    24.07.2012</code></pre></div><p>Полученный в итоге результат:<br /></p><div class="quotebox"><blockquote><div class="codebox"><pre><code>понедельник, 9 июля 2012 года
пятница, 10 августа 2012 года</code></pre></div></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 09 Jul 2012 06:45:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61448#p61448</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Вычисление даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61447#p61447</link>
			<description><![CDATA[<p>Несколько нетривиальная задача вычисления количества рабочих дней. Например фраза &quot;приходите через 3 дня&quot;, сказанная в понедельник значит &quot;приходите в четверг&quot;, а сказанная в пятницу - указывает на среду следующей недели. С учетом разным количеством дней в каждом месяце - число переменных функции увеличивается. </p><p>Вряд ли поможет, тем не менее посмотрите на <a href="http://code.google.com/p/jsxt/source/browse/trunk/js/Date.js#280">одну из этих функций</a> - возможно она натолкнет Вас на какие-нибудь мысли: <br /></p><div class="codebox"><pre><code>
/**
 * Date.prototype.getWorkingDaysInMonth
 *
 * @syntax
 * object.getWorkingDaysInMonth()
 *
 * @description
 * Метод преобразует примитивное значение объекта Date в 
 * количество рабочих дней в месяце. 
 *
 * Ненулевое значение в первом аргументе подразумевает 
 * 6-дневаную неделю (по умолчанию 5 дней в неделе). 
 *
 * Второй параметр - целое число, указывающая количество праздников, 
 * выпадающих на рабочие дни, или функция, которая вычисляет данное 
 * число на основании объекта Date, передаваемого функции. 
 *
 * @param	Integer
 * @param	Callback|Integer
 * @result	Integer
 * @access	public
 */
Date.prototype.getWorkingDaysInMonth = function(longWeek, holidays)
{
	var here = new Date(this.getFullYear(), this.getMonth() + 1, 0);
	var dim = here.getDate();
	var ldm = here.getDay();

	var t = typeof holidays;
	var h = 
		t == &#039;number&#039; 
		? holidays 
		: t == &#039;function&#039; 
		? holidays(this) 
		: 0;

	return arguments.callee[longWeek ? 6 : 5][dim][ldm] - h;
};

// Weekday of the last day in month
// Short week - 5 days&#039; week
Date.prototype.getWorkingDaysInMonth[5] = {
	//   Sun Mon Tue Wed Thu Fri Sat
	28: [20, 20, 20, 20, 20, 20, 20],
	29: [20, 21, 21, 21, 21, 21, 20],
	30: [20, 21, 22, 22, 22, 22, 21],
	31: [21, 21, 22, 23, 23, 23, 22]
};

// Long week - 6 days&#039; week
Date.prototype.getWorkingDaysInMonth[6] = {
	//   Sun Mon Tue Wed Thu Fri Sat
	28: [24, 24, 24, 24, 24, 24, 24],
	29: [24, 25, 25, 25, 25, 25, 25],
	30: [25, 25, 26, 26, 26, 26, 26],
	31: [26, 26, 26, 27, 27, 27, 27]
};</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Mon, 09 Jul 2012 06:35:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61447#p61447</guid>
		</item>
	</channel>
</rss>
