Jump to content
MSev

Como somar a data?

Recommended Posts

MSev

Eu tenho este código:

textBox7.Text = DateTime.Now.ToShortTimeString();

Mas depois de escolher alguma coisa de uma comboBox, este tempo vais somar com o tempo que pretendo pôr, dando assim um limite de tempo

para efectuar alguma acção.

Share this post


Link to post
Share on other sites
cultOfLuna

Boas,

A sugestão do Caça está correcta. Segundo o teu exemplo poderias fazer algo do género:

string textBox7.Text = DateTime.Now.ToShortTimeString();

/*
* E para adicionares o teu tempo... (Opção 1)
*/

// Defines um TimeSpan com o tempo que pretendes incrementar
TimeSpan timeToIncrement = new TimeSpan(1, 15, 30); // 1h 15m 30s

// O parsing da data que guardaste na TextBox como string
DateTime lastTime = DateTime.Parse(textBox7.Text);
lastTime.Add(timeToIncrement);

textBox7.Text = lastTime.ToShortTimeString();

/*
* Utilizando uma segunda opção (Opção 2)
*/

// O parsing da data que guardaste com string
lastTime = DateTime.Parse(textBox7.Text);

// Increcementa a hora
lastTime.AddHours(1);    // adiciona 1 hora
lastTime.AddMinutes(15); // adiciona 15 mins
lastTime.AddSeconds(30); // adiciona 30 segs

Só mais uma pequena coisa que quero acrescentar. Se poderes, evita os parsings de texto para DateTime. Muito facilmente poderão ser alterados e depois dá estouro :thumbsup:

Share this post


Link to post
Share on other sites
MSev

Pois, eu já experimentei este código, e já o alterei e mesmo assim continua a não acrescentar nada!  :thumbsup:

Share this post


Link to post
Share on other sites
MSev
[code]        private void Form2_Load(object sender, EventArgs e)
        {
            textBox7.Text = DateTime.Now.ToShortTimeString();
            TimeSpan timeToIncrement = new TimeSpan(0, 30, 0);
            DateTime lastTime = DateTime.Parse(textBox7.Text);
            lastTime.Add(timeToIncrement);
            textBox7.Text = lastTime.ToShortTimeString():
        }

[/code]

Share this post


Link to post
Share on other sites
Caça

O valor que te está a dar é "00:30:00"?

Está a fazer correctamente o Parse?

Qual é o valor da TextBox7?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
MSev

O valor que me dá é a mesma hora, que é o valor da

textBox7.Text = DateTime.Now.ToShortTimeString();

é como se o resto do código não estivesse a fazer nada!

Share this post


Link to post
Share on other sites
MSev

Dá buraco:

27-03-2011 20:52:0000:30:00

supostamente só devia de aparecer a hora actual somada mais 30minutos!

Share this post


Link to post
Share on other sites
Caça

Já experimentaste a segunda opção?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
cultOfLuna

Caros,

Antes de mais quero pedir as minhas desculpas, pois partilhei um código sem o testar! My bad... 😳 De facto, como é óbvio, há um bug na minha implementação!  :P Vou passar a apresentar a solução correcta, indicando onde está o problema.

string textBox7Text = DateTime.Now.ToShortTimeString();
Console.WriteLine(textBox7Text);

/*
* E para adicionares o teu tempo... (Opção 1)
*/

// Defines um TimeSpan com o tempo que pretendes incrementar
TimeSpan timeToIncrement = new TimeSpan(1, 15, 30); // 1h 15m 30s

// O parsing da data que guardaste na TextBox como string
DateTime lastTime = DateTime.Parse(textBox7Text);
DateTime lastTime2 = lastTime.Add(timeToIncrement); // <-- O bug estava aqui!! A função Add não adiciona nada à lastTime. O que faz é devolver o "valor correcto".

textBox7Text = lastTime2.ToShortTimeString();
Console.WriteLine(textBox7Text);
O output desse código, no meu teste foi o seguinte:
10:49
12:04
Mais uma vez, sorry pelo primeiro código partilhado :D

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.