Как из одной даты вычесть другую?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Как из одной даты вычесть другую?

Сообщение soldat » 21.01.2006 (Сб) 13:34

Я так понял с помощью TimeSpan и сравнить с помошью Compare

Как задать TimeSpan?

Я делал:
Public Sub New( _
ByVal days As Integer, _
ByVal hours As Integer, _
ByVal minutes As Integer, _
ByVal seconds As Integer)
days=20
...
...
...


Но что-то не то
Я только начал учить VB.NET

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.01.2006 (Сб) 13:50

Документацией пользуемся? Али вслепую чёрных кошек ловим?
http://msdn.microsoft.com/library/rus/d ... tTopic.asp
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

VAngel
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 81
Зарегистрирован: 13.01.2005 (Чт) 0:10
Откуда: 2:5030

Сообщение VAngel » 21.01.2006 (Сб) 18:21

Код: Выделить всё
        Dim TSpan As TimeSpan 'Это временной промежуток
        Dim Tstart As DateTime
        Dim Tend As DateTime
        TSpan = Tend - Tstart


Ну а дальше делай с ним что хош, хотя там по ссылке и так все написано

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 22.01.2006 (Вс) 0:22

soldat

что нужно ИМЕННО?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 22.01.2006 (Вс) 5:09

Sebas
Нужно из системной даты вычесть другую, результат - количество дней до (будущей) даты
Я только начал учить VB.NET

VAngel
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 81
Зарегистрирован: 13.01.2005 (Чт) 0:10
Откуда: 2:5030

Сообщение VAngel » 22.01.2006 (Вс) 9:08

Код: Выделить всё
        Dim TSpan As TimeSpan
        Dim Tstart As DateTime = Now
        Dim Tbd As DateTime = "25.07.2006"
        TSpan = Tbd - Tstart
        MsgBox(TSpan.Days)

Так можно вычислить сколько осталось дней до моего дня рождения. :)

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 22.01.2006 (Вс) 10:43

VAngel СПАСИБО
Я только начал учить VB.NET

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 22.01.2006 (Вс) 11:49

TSpan = Tbd.Substract(Tstart)
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 22.01.2006 (Вс) 13:03

VAngel
невыходит, пишет: Оператор "-" для типов Date и Date не опрелделён
Я только начал учить VB.NET

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 22.01.2006 (Вс) 13:04

Sebas
пишет: Substract не является членом Date :cry:
Я только начал учить VB.NET

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 22.01.2006 (Вс) 15:46

GSerg
еслиб всё было понятно я не спрашивал бы
Я только начал учить VB.NET

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.01.2006 (Вс) 15:47

Документация на русском языке.
Что именно в ней непонятно?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 23.01.2006 (Пн) 2:26

например:

Dim TSpan As TimeSpan
Dim Tstart As DateTime = Now
Dim Tbd As DateTime = "25.07.2006"
TSpan = Tbd - Tstart
MsgBox(TSpan.Days)

так пишет: Оператор "-" для типов Date и Date не опрелделён
а как вычесть не ясно
Я только начал учить VB.NET

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 23.01.2006 (Пн) 2:29

GSerg не могу из даты системной вычесть любую другую (результат число дней)
Я только начал учить VB.NET

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.01.2006 (Пн) 5:54

А я могу.
Now.Subtract(d)

И чё?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 23.01.2006 (Пн) 6:38

GSerg
напиши по подробнее, ничего не получается :cry:
Я только начал учить VB.NET

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.01.2006 (Пн) 7:12

Я тогда не знаю даже, что ещё надо объяснить...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 23.01.2006 (Пн) 7:46

GSerg

смотри:
Dim TSpan As TimeSpan
Dim Tstart As DateTime = Now
Dim Tbd As DateTime = "25.07.2006"
TSpan = Tbd - Tstart
MsgBox(TSpan.Days)

вроде всё должно получиться, но "-" не определён
(TSpan = Tbd - Tstart ), надо как-то вычесть а так как написано не получается
Я только начал учить VB.NET

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.01.2006 (Пн) 7:51

soldat
Скажи честно, ты сказанное воспринимаешь или пропускаешь? Или если пропускаешь, то намеренно или просто такой ты весь?

Тут я тебе дал ссылку на русскоязычное описание метода, который тебе нужен.
Тут тебе дали цитату из той же самой русскоязычной документации.
Тут - то же самое ещё раз.

А ты всё равно показываешь на минус и кричишь "не работает".
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

VAngel
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 81
Зарегистрирован: 13.01.2005 (Чт) 0:10
Откуда: 2:5030

Сообщение VAngel » 23.01.2006 (Пн) 9:56

Я незнаю почему у тебя не вычитает :? этот код который я написал, у меня нормально работает в vs8 (2005)

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 23.01.2006 (Пн) 11:58

GSerg VAngel

всё огромное спасибо,

Высказывание верно:

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас
Я только начал учить VB.NET

VAngel
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 81
Зарегистрирован: 13.01.2005 (Чт) 0:10
Откуда: 2:5030

Сообщение VAngel » 23.01.2006 (Пн) 15:38

Может напишешь как получилось

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.01.2006 (Пн) 17:19

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

soldat
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 12.01.2006 (Чт) 11:30
Откуда: Sakhalin

Сообщение soldat » 24.01.2006 (Вт) 1:22

VAngel
так ведь ты сам всё написал

Dim TSpan As TimeSpan
Dim Tstart As DateTime = Now
Dim Tbd As DateTime = "08.07.2006"
TSpan = Tbd.Subtract(Tstart)
Я только начал учить VB.NET

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 29.01.2006 (Вс) 19:47

soldat писал(а):Sebas
Нужно из системной даты вычесть другую, результат - количество дней до (будущей) даты


Привет.
А зачем изобретать велосипед.
Когда есть классная функция DateDiff

описание на странице http://msdn.microsoft.com/library/rus/d ... tediff.asp

пример кода от туда:
В этом примере функция DateDiff используется для отображения количества дней между заданной и текущей датами.

Dim FirstDate, Msg As String ' Declare variables.
Dim SecondDate As Date
FirstDate = InputBox("Enter a date")
SecondDate = CDate(FirstDate)
Msg = "Days from today: " & DateDiff(DateInterval.Day, Now, SecondDate)
MsgBox (Msg)

Удачи во всем.
Последний раз редактировалось Thomas 30.01.2006 (Пн) 9:35, всего редактировалось 1 раз.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 29.01.2006 (Вс) 22:55

Ну, всё таки, TimeSpan более "Объектный" и чистый .NET
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 43

    TopList