ANO BISSEXTO EM C#

ALANTB 19/10/2015 12:13:52
#452710
Olá, gostaria de saber como fica a function abaixo (que uso no vb6) em c#. Preciso que, ao digitar um ano(yyyy) em um maskedbox seja feita a verificação se é bissexto e qual evento usar para chama-la.Se for true preenche um textbox com 366 se for false 365.Isso ai...

Public Function Bissexto(intAno As Integer) As Boolean
[ô] verifica se um ano é bissexto
Bissexto = False
txtNroTotal.Text = [Ô]365[Ô]
If intAno Mod 4 = 0 Then
If intAno Mod 100 = 0 Then
If intAno Mod 400 = 0 Then
Bissexto = True
End If
Else
Bissexto = True
End If
txtNroTotal.Text = [Ô]366[Ô]

End If

End Function

Alan
DS2T 19/10/2015 12:40:34
#452711
[Ô]Tente dividir o ano por 4. Se o resto for diferente de 0, ou seja, se for indivisível por 4, ele não é bissexto. Se for divisível por 4, é preciso verificar se o ano acaba em 00 (zero duplo). Em caso negativo, o ano é bissexto. Se terminar em 00, é preciso verificar se é divisível por 400. Se sim, é bissexto; se não, é um ano normal.[Ô]



Public Function Bissexto(intAno As Integer) As Boolean
dim divisivelPor4 as Boolean = intAno mod 4 = 0
dim divisivelPor100 as Boolean = intAno mod 100 = 0
dim divisivelPor400 as Boolean = intAno mod 400 = 0

dim primeiraCondicao as Boolean = divisivelPor4 AndAlso not divisivelPor100
dim segundaCondicao as Boolean = divisivelPor4 AndAlso divisivelPor100 AndAlso divisivelPor400

return primeiraCondicao OrElse segundaCondicao
End Function


Fiz direto no editor e não dormi, se tiver errado... dá um desconto hahaha
OCELOT 19/10/2015 13:17:41
#452713
Resposta escolhida
Simples, é só adaptar para a sua necessidade
bool bissexto = DateTime.IsLeapYear(2015);
ALANTB 20/10/2015 09:12:20
#452761
OCELOT, esse exemplo dá pra colocar no evento Leave do maskedbox?Como se declara a variável bissexto?Dá mudar a máscara do maskedbox para receber somente o ano (yyyy), pois pra mim só importa o ano, o dia e mês não. Ou nesse caso é melhor um textbox??

Alan
OCELOT 20/10/2015 10:11:33
#452763
Esta função apenas te diz se o ano é bissexto ou não, a variável bissexto ali é só um exemplo, você tem que adaptar para o seu código.

Você pode fazer da forma que quiser, só passar um ano com quatro dígitos para a função que ela retorna um bool dizendo se é bissexto ou não.

if (DateTime.IsLeapYear(ano))
{
//ano é bissexto
}
else
{
//ano não é bissexto
}

A documentação explica tudo também
https://msdn.microsoft.com/en-us/library/system.datetime.isleapyear%28v=vs.110%29.aspx
ALANTB 20/10/2015 11:51:47
#452768
OCELOT, olha só, fui as cegas, na tentativa e erro e finalmente consegui chegar de um jeito que atendeu as minhas necessidades. Peguei o exemplo que tu postou na última mensagem e fiz as adaptações conforme abaixo e deu certo. Valeu....estou encerrando por aqui..!!!

public partial class frmFormulario : Form
{
private string codigoFormulario;
private int CadEdit;
private int ano; //DECLAREI ESSA VARIÁVEL

// E DEPOIS NO EVENTO LEAVE DO TEXTBOX...

private void txtAno_Leave(object sender, EventArgs e)
{
ano = Convert.ToInt32(txtAno.Text);

if (DateTime.IsLeapYear(ano))
{
//ano é bissexto
lblBissexto.Text = [Ô]Ano Bissexto[Ô];
txtAnoInicial.Text = [Ô]366[Ô];
}
else
{
//ano não é bissexto
lblBissexto.Text = [Ô][Ô];
txtAnoInicial.Text = [Ô]365[Ô];
}

Alan
Tópico encerrado , respostas não são mais permitidas