Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как узнать количество дней в месяце ? / 14 сообщений из 14, страница 1 из 1
16.09.2003, 14:28
    #32266529
23a77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество дней в месяце ?
...
Рейтинг: 0 / 0
16.09.2003, 14:43
    #32266572
23a77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество дней в месяце ?
Как в общем случае в VBA получить даты начала и конца интервалов (месяца, недели) ?
...
Рейтинг: 0 / 0
16.09.2003, 14:59
    #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
16.09.2003, 15:05
    #32266625
tpg
tpg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество дней в месяце ?
К дате с первым днем месяца добавляешь 1 месяц и определяешь разницу в днях между этими датами. Всё решается ф-иями DateAdd(), DateDiff()
...
Рейтинг: 0 / 0
16.09.2003, 18:23
    #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
16.09.2003, 19:48
    #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
Период между сообщениями больше года.
18.03.2008, 00:15
    #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
19.03.2008, 14:15
    #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
19.03.2008, 14:28
    #35200727
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество дней в месяце ?
Поискать не судьба?

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

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
20.03.2008, 07:29
    #35202226
detail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество дней в месяце ?
Day(DateAdd("d", -1, DateAdd("m", 1, [твоя дата])))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
17.03.2014, 00:18
    #38587712
MiroZon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество дней в месяце ?
detail, спасибо! Очень пригодилось, до этого пользовался не удобным и громоздким кодом. Спс!
...
Рейтинг: 0 / 0
02.04.2014, 20:46
    #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
02.04.2014, 22:59
    #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
Период между сообщениями больше года.
18.04.2016, 09:02
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как узнать количество дней в месяце ? / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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