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

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

06.06.2012, 23:49. Показов 6236. Ответов 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
Programming
Эксперт
9485 / 562 / 19
Регистрация: 12.04.2006
Сообщений: 11,671
Блог
06.06.2012, 23:49
Ответы с готовыми решениями:

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

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

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

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

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

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

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

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

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

Как прибавить к текущей дате определенное количество часов, дней, месяцев и т.д.
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
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
08.06.2012, 14:41 6
Цитата Сообщение от 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  [ТС] 7
в результате мы получим ответ типа: "3 года 42 месяца 1153 дня" - что не приемлемо

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

есть команда которая возвращает количество дней в текущем месяце?
вся завозка в том что не понятно как определить 30 дней это больше или меньше 1 мес
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
10.06.2012, 10:38 8
Цитата Сообщение от surikk66 Посмотреть сообщение
есть команда которая возвращает количество дней в текущем месяце?
VB.NET
1
Date.DaysInMonth()
0
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
07.06.2019, 13:32 9
Для истории, чтоб легче было найти
Готовые решения и полезные коды на Visual Basic .NET (Часть-1)
0
07.06.2019, 13:32
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
07.06.2019, 13:32
Помогаю со студенческими работами здесь

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

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

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

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

Разница между датами
Здравствуйте. Суть такова: пользователь вводит некую дату в формате дд.мм.гггг в текст бокс, по...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Блоги программистов
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­хронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru