Newsgroup: it.comp.lang.visual-basic
Titolo: Vb.net da numero a data

salve a tutti,
Per un progetto di agenda mi trovo nella necessità di aggiungere degli
appuntamenti a certi giorni: tutti i lunedí fai questo, tutti i
martedí far quest'altro etc...
Pensavo di fare un ciclo for da 1 a 365 e verificare quel numero di
giorno a quale mese e giorno corrisponde ma non so come fare... Esiste
un algoritmo che dal giorno mi permette di ricavare la data e a quale
giorno corrisponde (lunedí, martedí...)?
Grazie 1000

 giorno corrisponde (lunedí, martedí...)?
Sì, e qualcuno lo ha già scritto per te. Esempio:
  Dim DataOggi As DateTime = DateTime.Today
  Dim GiornoSettimana As String = 
Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(DataOggi.DayOfWeek)
-- 
Saluti
VITRIOL


questa mi ritorna il nome del giorno (lunedi, martedi', mercoledi',
giovedi', venerdi', sabato, domenica), ma avrei anche la necessità che
passato un numero da 1 a 365 mi restituisse la data completa... es: se
gli passassi 32, mi dovrebbe ritornare 01/02/2011
magari potrei farla a mano andando a sottrarre il numero dei mesi e
testando se il resto è inferiore al numero di gg del mese successivo,
ma lo vedo un po' laborioso... anche perchè dovrei combattere con
l'anno bisestile... ho provato a googlare un po' per vedere se
esisteva un qualche calcolo da implementare poi in 
vb.net
 ma non ho
trovato nulla di soddisfacente forse sbaglio le keyword per la
ricerca?
ora provo ancora...
grazie 1000

 gli passassi 32, mi dovrebbe ritornare 01/02/2011
Dovrebbe bastare una cosa del genere:
         Dim Data1, Data2 As DateTime
         Data1 = DateTime.Parse("1/1/2011")
         Data2 = Data1.AddDays(32 - 1)
-- 
Saluti
VITRIOL

 VITRIOL
azzz... hai ragione... non c'avevo pensato!!!! Mi sono trovato un
funzione in javascript che lo faceva e mi sono tirato fuori tutto sto
popo' di roba qui:
    Private Function Giorno2Data(ByVal giorni As Integer, ByVal anno
As Integer) As String
        Dim b As Integer
        Dim c As Integer
        Dim d As Integer
        Dim e As Integer
        Dim m As Integer
        Dim err As String
        If (((giorni < 1) Or (giorni > 365)) And (((anno Mod 4) <> 0)
Or (((anno Mod 100) = 0) And ((anno Mod 400) <> 0)))) Then
            err = "Giorno Inesistente"
        End If
        If (((giorni < 1) Or (giorni > 366)) And ((((anno Mod 4) = 0)
And (Not (((anno Mod 100) = 0) And ((anno Mod 400) <> 0)))))) Then
            err = "Giorno Inesistente"
        Else
            If (anno < 1583) Then
                err = "Il calcolo è valido per gli anni successivi al
1582"
            Else
                If (((anno Mod 4) <> 0) Or (((anno Mod 100) = 0) And
((anno Mod 400) <> 0))) Then
                    b = Math.Floor((giorni + 1889 - 122.1) / 365.25)
                    c = giorni + 1889 - Math.Floor(365.25 * b)
                    e = Math.Floor(c / 30.6001)
                    If (e < 13.5) Then
                        m = e - 1
                    Else
                        m = e - 13
                    End If
                    d = c - Math.Floor(30.6001 * e)
                ElseIf ((((anno Mod 4) = 0) And (Not (((anno Mod 100)
= 0) And ((anno Mod 400) <> 0))))) Then
                    b = Math.Floor((giorni + 1523 - 122.1) / 365.25)
                    c = giorni + 1523 - Math.Floor(365.25 * b)
                    e = Math.Floor(c / 30.6001)
                    If (e < 13.5) Then
                        m = e - 1
                    Else
                        m = e - 13
                    End If
                    d = c - Math.Floor(30.6001 * e)
                End If
            End If
        End If
        If err = "" Then
            Return Format(d, "0#") & "/" & Format(m, "0#") & "/" &
anno
        End If
    End Function
funziona.... ma la tua soluzione è sicuramente molto piu' compatta ed
ottimizzata!!!
Magari hai anche qualcosa per i giorni festivi/pasqua? :)
Ciao e grazie 1000!!!