powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как узнать количество дней в месяце ?
14 сообщений из 14, страница 1 из 1
Как узнать количество дней в месяце ?
    #32266529
23a77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как узнать количество дней в месяце ?
    #32266572
23a77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в общем случае в VBA получить даты начала и конца интервалов (месяца, недели) ?
...
Рейтинг: 0 / 0
Как узнать количество дней в месяце ?
    #32266617
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного из FAQ
Наверное тебе это поможет:
DatePart Function

Returns a Variant (Integer) containing the specified part of a given date.

Syntax

DatePart(interval, date[,firstdayofweek[, firstweekofyear]])

The DatePart function syntax has these named arguments:

Part Description
interval Required. String expression that is the interval of time you want to return.
date Required. Variant (Date) value that you want to evaluate.
firstdayofweek Optional. A constant that specifies the first day of the week. If not specified, Sunday is assumed.
firstweekofyear Optional. A constant that specifies the first week of the year. If not specified, the first week is assumed to be the week in which January 1 occurs.



Settings

The interval argument has these settings:

Setting Description
yyyy Year
q Quarter
m Month
y Day of year
d Day
w Weekday
ww Week
h Hour
n Minute
s Second



The firstdayofweek argument has these settings:

Constant Value Description
vbUseSystem 0 Use the NLS API setting.
vbSunday 1 Sunday (default)
vbMonday 2 Monday
vbTuesday 3 Tuesday
vbWednesday 4 Wednesday
vbThursday 5 Thursday
vbFriday 6 Friday
vbSaturday 7 Saturday



The firstweekofyear argument has these settings:

Constant Value Description
vbUseSystem 0 Use the NLS API setting.
vbFirstJan1 1 Start with week in which January 1 occurs (default).
vbFirstFourDays 2 Start with the first week that has at least four days in the new year.
vbFirstFullWeek 3 Start with first full week of the year.



Remarks

You can use the DatePart function to evaluate a date and return a specific interval of time. For example, you might use DatePart to calculate the day of the week or the current hour.

The firstdayofweek argument affects calculations that use the "w" and "ww" interval symbols.

If date is a date literal, the specified year becomes a permanent part of that date. However, if date is enclosed in double quotation marks (" "), and you omit the year, the current year is inserted in your code each time the date expression is evaluated. This makes it possible to write code that can be used in different years.

Note For date, if the Calendar property setting is Gregorian, the supplied date must be Gregorian. If the calendar is Hijri, the supplied date must be Hijri.

The returned date part is in the time period units of the current Arabic calendar. For example, if the current calendar is Hijri and the date part to be returned is the year, the year value is a Hijri year.

mahoune
...
Рейтинг: 0 / 0
Как узнать количество дней в месяце ?
    #32266625
Фотография tpg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К дате с первым днем месяца добавляешь 1 месяц и определяешь разницу в днях между этими датами. Всё решается ф-иями DateAdd(), DateDiff()
...
Рейтинг: 0 / 0
Как узнать количество дней в месяце ?
    #32266987
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или так: берешь первое число следующего месяца и от этой даты отнимаешь один день, узнаешь номер дня - это и будет количество дней.
Код: plaintext
1.
2.
Private Function DaysOfMonth(iMonth As Integer, iYear As Integer) As Integer
 DaysOfMonth = Day(DateAdd( "d" , - 1 , DateAdd( "m" ,  1 , DateSerial(iYear, iMonth,  1 ))))
End Function

IMHO, tpg предложил более простой вариант:
Код: plaintext
1.
2.
Private Function DaysOfMonth2(dDate As Date) As Integer 
 DaysOfMonth2 = DateDiff( "d" , dDate, DateAdd( "m" ,  1 , dDate))
End Function
...
Рейтинг: 0 / 0
Как узнать количество дней в месяце ?
    #32267045
Фотография ulis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно и так :)
' Функция (MLD == Month Last Day) вычисляет последний день заданного месяца
' Год также по идее нужно передавать, т.к. февраль может быть 28 или 29 дней
Public Function MLD(intМесяц As Integer, Optional intГод As Integer) As Integer

On Error GoTo Err_MLD

If IsMissing(intГод) Then
MLD = Day(DateSerial(Year(Date), intМесяц + 1, 0))
Else
MLD = Day(DateSerial(intГод, intМесяц + 1, 0))
End If

Exit Function

Err_MLD:

Resume Next
MLD = 0

End Function
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как узнать количество дней в месяце ?
    #35196721
HedGeHoG312
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кому пригодиться.
По названию месяца получить его начало и конец.
то есть зная "февраль" текущего года получаем "01.02.2008-29.02.2008"


Dim m As String 'название месяца
Dim f As String
Dim date_from As String
Dim date_to As String

m = "январь"
f = "01 " & m & " " & Year(Date)

If IsDate(f) Then
date_from = "01." & Format(f, "mm") & "." & Year(Date)
date_to = DaysOfMonth2(CDate(f)) & "." & Format(f, "mm") & "." & Year(Date)
MsgBox date_from & vbCrLf & date_to
Else
MsgBox "error"
End If
...
Рейтинг: 0 / 0
Как узнать количество дней в месяце ?
    #35200673
Фотография LifeFire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нарыл кусок кода в архиве где трахался примерно с такой же проблемой, может нароешь для себя чего-нибудь ;-):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
Private Sub Form_Load()
    On Error GoTo ErrorDirrective1
    'присваиваем календарям сегодняшнее число
    Dim nNextMonth As Integer
    Dim nNextYear As Integer
    Dim sNextDay$
    
    If Format(Now, "MM") <  12  Then
        nNextMonth = Format(Now, "MM") +  1 
        sNextMonthDate = Format$(Now, "d" & " " & nNextMonth & " " & "yyyy")
    ElseIf Format(Now, "MM") =  12  Then
        'Если декабрь, то перелистываем его на январь следущего года
        
        nNextYear = Format(Now, "yyyy") +  1 
        nNextMonth =  1 
        sNextDay = Format$(Now, "d")
        
        'переменная где будет хранится сегодняяшняя дата на месяц вперед, если сейчас декабрь -))
        sNextMonthDate = sNextDay & " " & nNextMonth & " " & nNextYear
        
    End If
        
    'а теперь сделаем так, чтобы для удобства DTPicker1 показывал первое число следующего
    'месяца, а DTPicker2 показывал последнее число следующего месяца
            
    Dim sNextFirst$ 'дата Первое число следующего месяца
    Dim sNextLast$ 'дата Последнее число следующего месяца - должна быть связана с
    ' функцией KonecMesaca в AdditionalModule0
            
    'вот первое число след. месяца -)
    sNextFirst =  1  & " " & Format(sNextMonthDate, "M") & " " & Format(sNextMonthDate, "yyyy")
            
    DTPicker1.Value = sNextFirst 'присваеваем переменную первого числа след. месяца
       
    sNextLast = KonecMesaca(sNextMonthDate)
    sNextLast = sNextLast & " " & Format(sNextMonthDate, "M") & " " & Format(sNextMonthDate, "yyyy")
    
    DTPicker2.Value = sNextLast
    'здесь вместо sNextMonthDate надо поставить sNextLast, но это ЗАВТРА -)
    
    DTPicker1.Format = dtpCustom
    
    DTPicker1.Format = dtpCustom
    DTPicker1.CustomFormat = "dd MMMM yyyy"
    
    DTPicker2.Format = dtpCustom
    DTPicker2.CustomFormat = "dd MMMM yyyy"
    
    flFolder1.Path = "C:\"
    Call Formad_Add
    Call Sity_Add
    Call Adding_Years
...
Рейтинг: 0 / 0
Как узнать количество дней в месяце ?
    #35200727
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поискать не судьба?

> Автор: Worobjoff
> Дата начала периода:
> DateSerial(Год, Месяц, 1)
>
> Дата конца периода:
> DateAdd("d", -1, DateAdd("m", 1, DateSerial(Год, Месяц, 1)))
Вторая часть и будет искомая величина ;)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как узнать количество дней в месяце ?
    #35202226
detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Day(DateAdd("d", -1, DateAdd("m", 1, [твоя дата])))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как узнать количество дней в месяце ?
    #38587712
MiroZon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
detail, спасибо! Очень пригодилось, до этого пользовался не удобным и громоздким кодом. Спс!
...
Рейтинг: 0 / 0
Как узнать количество дней в месяце ?
    #38603522
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
detailDay(DateAdd("d", -1, DateAdd("m", 1, [твоя дата])))
и что
Код: vbnet
1.
2.
3.
4.
'месяц день год
    d = #1/2/2014#
    
    MsgBox$ Day(DateAdd("d", -1, DateAdd("m", 1, d)))


единица в мессаге значит?
...
Рейтинг: 0 / 0
Как узнать количество дней в месяце ?
    #38603604
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофаdetailDay(DateAdd("d", -1, DateAdd("m", 1, [твоя дата])))
и что
Код: vbnet
1.
2.
3.
4.
'месяц день год
    d = #1/2/2014#
    
    MsgBox$ Day(DateAdd("d", -1, DateAdd("m", 1, d)))


единица в мессаге значит?

d = #1/2/2014# - 2 января 2014.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как узнать количество дней в месяце ?
    #39217748
Сергей79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Function DaysOfMonth(Optional iMonth As Integer = 0, Optional iYear As Integer = 0, Optional dDate As Date = #1/1/1900#) As Integer

If iMonth <> 0 And iYear <> 0 Then
DaysOfMonth = Day(DateAdd("d", -1, DateAdd("m", 1, DateSerial(iYear, iMonth, 1))))
ElseIf dDate > #1/1/1900# Then
DaysOfMonth = DateDiff("d", dDate, DateAdd("m", 1, dDate))
Else
DaysOfMonth = 0
End If

End Function

Гибрид
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как узнать количество дней в месяце ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]