ANO BISSEXTO EM C#
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
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
[Ô]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.[Ô]
Fiz direto no editor e não dormi, se tiver errado... dá um desconto hahaha
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
Simples, é só adaptar para a sua necessidade
bool bissexto = DateTime.IsLeapYear(2015);
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
Alan
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.
A documentação explica tudo também
https://msdn.microsoft.com/en-us/library/system.datetime.isleapyear%28v=vs.110%29.aspx
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
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
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