Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/32: Рейтинг темы: голосов - 32, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 16

Разница между датами в формате "год/мес/день"

06.06.2012, 23:49. Показов 6276. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Простая вроде задачка, но Бейсик я увидел тока сегодня первый день
потратил 2 часа на изучение функций связаны с датами, но почему то не нашел нужной
в результате накидал вот такое пугало:

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
26
27
28
29
30
31
32
33
34
35
36
        Dim TimeEnd As Date = New Date(2012, 12, 12)
        Dim D As Integer
        Dim M As Integer
        Dim Y As Integer
        Dim Rslt As String = "До конца света осталось: "
 
        If Date0.Value.Day <= TimeEnd.Day Then
            Y = DateDiff(DateInterval.Year, Date0.Value, TimeEnd)
            M = DateDiff(DateInterval.Month, DateAdd(DateInterval.Year, (Y), Date0.Value), TimeEnd)
            D = TimeEnd.Day - Date0.Value.Day
        Else
            Y = DateDiff(DateInterval.Year, Date0.Value, TimeEnd)
            M = DateDiff(DateInterval.Month, DateAdd(DateInterval.Year, (Y), Date0.Value), TimeEnd) - 1
 
            If M = -1 Then
                M = 11
                Y = Y - 1
            End If
 
            D = DateDiff(DateInterval.Day, Date0.Value, DateAdd(DateInterval.Month, (-M - 12 * Y), TimeEnd)) + 1
        End If
 
 
        If Y > 0 Then
            Rslt = CStr(Y) + " г.  "
        End If
 
        If M > 0 Then
            Rslt = Rslt + CStr(M) + " мес.  "
        End If
 
        If D > 0 Then
            Rslt = Rslt + CStr(D) + " дн.  "
        End If
 
        Label1.Text = Rslt
---------------------------------------------------------------------------------

работает, но как то "не красиво" выглядит
есть как поще сделать ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2012, 23:49
Ответы с готовыми решениями:

Разница между датами
Помогите решить следующую задачу. Есть БД в которой храняться записи. И есть форма с определенными полями (номер заявки, телефон, фио...

Разница между двумя датами
Всем Привет. Вопрос такой,как рассчитать разницу между датами не в днях, а в полных годах,месяцах и днях? Например: с 1.1.1900 по...

Создать класс Date для работы с датами в формате «год.месяц.день»
ВАЖНО! нужно сделать в C#! Условие: Создать класс Date для работы с датами в формате «год.месяц.день». Дата представляется...

8
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
07.06.2012, 00:19
А что это ?

Добавлено через 4 минуты
Date0 это кто ?
0
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 16
07.06.2012, 00:41  [ТС]
Date0 - это значение вводимое через DataTimerPiker

задача выводить календарную разницу между датами
тут я за вторую дату взял 12/12/2012(КС), а первую варьировал

нужно учитывать что в месяцах бывает 30, 31, 28 и 29 дней
С 20 февраля 2012 до КС 9 мес. и 21 дня
а с 20 мая 2012 до КС 6 мес и 23 дня

из за этого использовать просто функцию DateSerial() не получается
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
07.06.2012, 00:44
понял, на форме значит дэйтТаймПикер и лэйбл...
0
 Аватар для Gilf
11 / 11 / 0
Регистрация: 27.04.2012
Сообщений: 38
08.06.2012, 11:54
Цитата Сообщение от Памирыч Посмотреть сообщение
Работа с датами, временем

Как прибавить к текущей дате определенное количество часов, дней, месяцев и т.д.
VB.NET Скопировано
1
2
3
        Dim D As Date
        D = D.AddDays(50)
        MsgBox(D.ToLongDateString)
Либо так:

VB.NET Скопировано
1
2
        Dim D As Date = Now
        MsgBox(DateAdd(DateInterval.Day, 45, D))
Вычитание делается по той же схеме, но с отрицательными значениями.


Разница между двумя датами в днях, месяцах и т.д.
VB.NET Скопировано
1
2
3
        Dim D As Date = #7/23/2011#
        Dim N As Date = Now
        MsgBox(DateDiff(DateInterval.Day, D, N)) 'Разница в днях


Получить текущую дату и время
VB.NET Скопировано
1
        MsgBox(Now.ToLongDateString & ", " & Now.ToLongTimeString)


Узнать день недели
VB.NET Скопировано
1
        MsgBox(Format(D, "dddd"))


День недели в численном представлении
VB.NET Скопировано
1
        MsgBox(D.DayOfWeek)


Узнать, високосный год или нет
VB.NET Скопировано
1
        MsgBox(Date.IsLeapYear(Now.Year))


Установить в компьютере системное время и дату
VB.NET Скопировано
1
2
        TimeString = "23:04:10"
        DateString = "8/24/2011"


Подробнее о форматировании дат.
Мы можем использовать даты и время еще гибче, благодаря функции Format.
Например:

VB.NET Скопировано
1
2
3
        Dim D As Date = Now
        Dim FormatString As String
        MsgBox(Format(D, FormatString))
Основные значения FormatString:

%sСекунды, если спереди ноль - он не пишется
fffМилисекунды
ssСекунды, всегда двузначное число
%mМинуты, если спереди ноль - он не пишется
mmМинуты, всегда двузначное число
%hАналогично
hhс часами (представление от 0 до 12)
HHс часами (Представление от0 до 24)
%MАналогично
MMс месяцами
dddДень недели, в сокращенном виде, например, Пн
ddddТо же, но слово целиком, например, понедельник
MMMМесяц, в сокращенном виде, например, янв
MMMMТо же, но в полном
%yГод, в сокращенном виде, 2 последние цифры, если предпоследняя не 0 и одна в противном случае
yyГод, 2 цифры в любом случае, например, 1996 год - 96
yyyyГод целиком

Исходя из этого, легко составлять свои строки для вывода информации:
dd-MM-yyyy
Или
VB.NET Скопировано
1
2
        Dim D As Date = Now
        MsgBox(Format(D, "Сегодня dd -е число, год yyyy, а день недели - dddd, а месяц -  MMMM"))
Обращаю внимание на регистр букв, т.е. если написать не dd, а DD или Dd, то формат не будет распознан
Вот что писал Памирыч... Просто выводит разницу в днях
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
08.06.2012, 14:41
Цитата Сообщение от Gilf Посмотреть сообщение
Просто выводит разницу в днях
По сабжу эта разница должна быть отражена в формате "год/месяц/день". Вот так, наверное:

VB.NET Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Class Form1
    Public x, y As Date
    Public day, month, year As Long
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        x = ("2012, 12, 12")
    End Sub
 
    Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged
        y = DateTimePicker1.Value
        day = DateDiff(DateInterval.Day, y, x)
        month = DateDiff(DateInterval.Month, y, x)
        year = DateDiff(DateInterval.Year, y, x)
        TextBox1.AppendText(day & " дней" & month & " месяцев" & year & " лет")
    End Sub
End Class
0
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 16
10.06.2012, 01:19  [ТС]
в результате мы получим ответ типа: "3 года 42 месяца 1153 дня" - что не приемлемо

я уже 3 метода придумал - но все 20+ строк кода всякой фигни

есть команда которая возвращает количество дней в текущем месяце?
вся завозка в том что не понятно как определить 30 дней это больше или меньше 1 мес
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
10.06.2012, 10:38
Цитата Сообщение от surikk66 Посмотреть сообщение
есть команда которая возвращает количество дней в текущем месяце?
VB.NET Скопировано
1
Date.DaysInMonth()
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4323 / 3397 / 507
Регистрация: 27.01.2014
Сообщений: 6,197
07.06.2019, 13:32
Для истории, чтоб легче было найти
Готовые решения и полезные коды на Visual Basic .NET (Часть-1)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2019, 13:32
Помогаю со студенческими работами здесь

Класс TDate для работы с датами в формате "день.месяц.год"
Создать класс TDate для работы с датами в формате &quot;день.месяц.год&quot;. Дата является структурой с тремя полями. Реализовать методы увеличения...

Создать класс Date для работы с датами в формате "год.месяц.день"
надо написать класс 1 контрольная 8 задание. только срочно в понедельник уже сдать надо. заранее спасибо.

Дата в формате <день>.<месяц>.<год>
а дальше нужно будет определить, например, сколько дней прошло с начала года и т.п. Подскажите, пожалуйста, как правильно получить...

Задана дата в формате <день>.<месяц>.<год>
Задана дата в формате &lt;день&gt;.&lt;месяц&gt;.&lt;год&gt;. Определить: 1) сколько дней прошло с начала года; 2) сколько дней осталось до конца года; ...

Разница между 2 датами
Надо в консольке посчитать разницу между первой и второй датой... Вот что накопал пока что... Только не правильно... ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер