Cuando empecer a trabajar con Delphi 7, hace como 2 años, en mi escuela se usaba mucho un programa llamado Trucomania, una bases de datos que incluia entre muchas cosas un algoritmo para saber el dia de la semana mediante una fecha dada, un algoritmo interesante, al que nunca le preste atención, y paso el tiempo y paso, y en la plataforma .net aprendi una forma de hacerlo mas sencillo:
Dim d31 As New DateTime(2006, 7, 1)
msgbox(d31.dayofweek.tostring)
La clase Date, DateTime y TimeSpan, encapsulan una serie de algoritmos como el que mencionaba arriba, que nos permiten un desarrollo muy rapido, ejemplo de esto lo tenemos en el siguiente algoritmo: Que permite obtener la fecha del primer (martes,lunes,etc) y ultimo (etc). Esto esta hecho a la tremenda pero segun mi calendario esta bien.
Dim d31 As New DateTime(2006, 7, 1) 'Ponemos la fecha el primero 'de Julio
Dim diapredeterminado As DayOfWeek = DayOfWeek.Saturday 'Primer ....
Select Case d31.DayOfWeek
Case diapredeterminado
Me.TextBox2.Text = d31.Date.ToString Beep()
Case Else
Dim intervalo As New TimeSpan(1, 0, 0, 0)
While True
d31 += intervalo
If d31.DayOfWeek = diapredeterminado Then
Exit While
End If
End While
Me.TextBox2.Text = d31.Date.ToString
End Select
d31 = New DateTime(2006, 7, 31)'Ponemos la fecha el 31 de Julio Select Case d31.DayOfWeek
Case diapredeterminado
Me.TextBox2.Text &= d31.Date.ToString Beep()
Case Else
Dim intervalo As New TimeSpan(1, 0, 0, 0)
While True d31 -= intervalo
If d31.DayOfWeek = diapredeterminado Then
Exit While
End If
End While 'Ultimo .....
Me.TextBox2.Text &= d31.Date.ToString
End Select
El resultado se muestra en un textbox, gracias a DateTime, no nos tenemos que preocupar si es bisiesto o no, ya que ese tipo de comprobaciones y algoritmos forman parte del tipo. Gracias BCL!!!
4 comments:
logre una forma simplificada d tu metodo...se podria abstraer para llevarla a una clase...
salu2
Dim flagPrimerSabado As New DateTime(2006, 2, 1)
Dim flagUltimoSabado As New DateTime(2006, 2, 28)
Dim sabado As Integer = Convert.ToInt32(DayOfWeek.Saturday)
Dim primerSabado As Integer = sabado - Convert.ToInt32(flagPrimerSabado.DayOfWeek)
Dim ultimoSabado As Integer = sabado - Convert.ToInt32(flagUltimoSabado.DayOfWeek)
If primerSabado < 0 Then primerSabado *= -1
If ultimoSabado < 0 Then ultimoSabado *= -1
MessageBox.Show(flagPrimerSabado.AddDays(primerSabado).ToString())
MessageBox.Show(flagUltimoSabado.AddDays(ultimoSabado).AddDays(-7).ToString())
emiaj:
Antes que nada gracias por dejar un comentario, ya me estaba preguntando si alguien se molestaba en leer esta pagina, definitivamente mas sencillo, son 8lineas contra 31!!!
Claro que se puede encapsular en una clase, para operaciones con fechas ;-)
jeje si vieras kuantos entra a mi blog (none, nada, cero) :D sera porke no skribo naaa :) , bueno siempre veo blogs d x aki y alla pero rara vez dejo mensajes, asi ke si no te dejan komentarios no significa ke no te lean...felicitaciones por tu blog ta entretenido...salu2...bytes
emiaj:
Gracias, puedes seguir visitandolo, jajja nos vemos,
pd: dime tu blog?
Post a Comment