Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
GSXL
161 / 170 / 26
Регистрация: 26.11.2011
Сообщений: 382
Записей в блоге: 1
1

Определить количество дней четвертого числа между двумя датами

06.07.2016, 00:15. Просмотров 848. Ответов 7
Метки нет (Все метки)

Перед мной стоит задача определить сколько к примеру 4-тых чисел между датой N1 и датой N2
К примеру с даты 01.01.2016 по 01.05.2016 - 29 чисел 4 штуки, а как реализовать программно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2016, 00:15
Ответы с готовыми решениями:

Вычислить количество дней между датами
Нужно вычислить количество дней между датами. Есть стандартные функции?

Определить количество полных недель и понедельников между заданными датами
Заданы две даты. Определить количество полных недель и понедельников между...

Получение интервала между двумя датами в DGV
Уважаемые форумчане. не могу решить одну проблему. Проблема в том что сравнить...

Как вычислить разницу в годах между двумя датами?
Задачка школьного уровня но напрочь забыл(. Осложняется еще и тем, что...

Определить количество прожитых дней
Есть код для Visual Basik 6.0, а надо для 2010 года. Помогите пожалуйста....

7
densy
86 / 84 / 19
Регистрация: 30.08.2015
Сообщений: 360
06.07.2016, 00:44 2
распарсить строку "01.01.2016" конвертировать в число и разность между ними, первые два числа - месяц?
1
densy
86 / 84 / 19
Регистрация: 30.08.2015
Сообщений: 360
06.07.2016, 01:17 3
как вариант

vb.net
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
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim dey1 As Integer = Convert.ToInt32(DateTimePicker1.Text.Substring(0, 2))
        Dim dey2 As Integer = Convert.ToInt32(DateTimePicker2.Text.Substring(0, 2))
 
        Dim mes1 As Integer = Convert.ToInt32(DateTimePicker1.Text.Substring(3, 2))
        Dim mes2 As Integer = Convert.ToInt32(DateTimePicker2.Text.Substring(3, 2))
 
        Dim summ1 As Integer = mes2 - mes1
        Dim summ2 As Integer
 
        If dey1 < 4 And dey2 < 4 Then
            summ2 = summ1
 
        ElseIf dey1 >= 4 And dey2 < 4 Then
            summ2 = summ1 - 1
 
        ElseIf dey1 < 4 And dey2 >= 4 Then
            summ2 = summ1 + 1
 
        ElseIf dey1 >= 4 And dey2 >= 4 Then
            summ2 = summ1 + 2
        End If
 
        TextBox2.Text = summ2
    End Sub


Определить количество дней четвертого числа между двумя датами
1
OwenGlendower
Супер-модератор
Эксперт .NET
9479 / 8288 / 3547
Регистрация: 17.03.2014
Сообщений: 16,502
Записей в блоге: 1
06.07.2016, 01:49 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

GSXL, примерно так:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
Dim d1 As New DateTime(2016,1,1)
Dim d2 As New DateTime(2016,5,1)
 
Dim tempDate As New DateTime(d1.Year, d1.Month, 4)
Dim count As Integer
Do While tempDate < d2
    If tempDate>d1 Then
        count += 1
    End If
    tempDate = tempDate.AddMonths(1)
Loop
Console.WriteLine(count)
Цитата Сообщение от densy Посмотреть сообщение
vb.net
1
Dim dey1 As Integer = Convert.ToInt32(DateTimePicker1.Text.Substring(0, 2))
Никогда! Так. Не. Делай. Даты следует разбирать как даты, а не как строки потому что формат строки зависит от региональных настроек. Не говоря о том что у DateTimePicker есть свойство Value которое возвращает DateTime. Правильно будет так:
vb.net
1
Dim dey1 As Integer = DateTimePicker1.Value.Day
3
densy
86 / 84 / 19
Регистрация: 30.08.2015
Сообщений: 360
06.07.2016, 03:01 5
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Даты следует разбирать как даты, а не как строки
наверно дата в вопросе задается в виде строки, а с DateTimePicker1 - да ошибочный пример, вместо DateTimePicker1.Text - "01.01.2016" DateTimePicker2.Text - "01.05.2016"

Добавлено через 5 минут
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Dim d2 As New DateTime(2016,5,1)
а если
vb.net
1
Dim d2 As New DateTime(2016,5,4)
- выдает ошибочное значение
1
OwenGlendower
Супер-модератор
Эксперт .NET
9479 / 8288 / 3547
Регистрация: 17.03.2014
Сообщений: 16,502
Записей в блоге: 1
06.07.2016, 09:54 6
Цитата Сообщение от densy Посмотреть сообщение
наверно дата в вопросе задается в виде строки
Тогда нужно использовать DateTime.Parse или DateTime.ParseExact

Цитата Сообщение от densy Посмотреть сообщение
а если Dim d2 As New DateTime(2016,5,4) - выдает ошибочное значение
То есть?
2
densy
86 / 84 / 19
Регистрация: 30.08.2015
Сообщений: 360
06.07.2016, 12:39 7
OwenGlendower, при
vb.net
1
2
Dim d1 As New DateTime(2016,1,1)
Dim d2 As New DateTime(2016,5,1)
выдает значение 4 и при

vb.net
1
2
Dim d1 As New DateTime(2016,1,1)
Dim d2 As New DateTime(2016,5,4)
тоже выдает значение 4
1
OwenGlendower
Супер-модератор
Эксперт .NET
9479 / 8288 / 3547
Регистрация: 17.03.2014
Сообщений: 16,502
Записей в блоге: 1
06.07.2016, 12:51 8
Лучший ответ Сообщение было отмечено GSXL как решение

Решение

densy, DateTime тут ни при чем. ТС попросил посчитать количество дней между датами не уточняя что делать с границами. Поэтому я написал условия которые их исключают. Если границы нужно учесть, то используем условия с "равно".
vb.net
1
2
3
4
5
6
Do While tempDate <= d2
    If tempDate>=d1 Then
        count += 1
    End If
    tempDate = tempDate.AddMonths(1)
Loop
1
06.07.2016, 12:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2016, 12:51

Определить интрвал времени между двумя событиями
Доброго времени суток! Не могу справиться с задачей: нажимаю на форме button...

Как вычислить разницу между датами
Господа подскажите в программе нужно узнать разницу времени между началом...

Определить количество дней между двумя датами
Всем привет. Знаю была уже подобная задачка решена ранее, и не раз: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru