16 messaggi dal 18 agosto 2016
Salve… ho un altro quesito da porvi. Ho fatto un programma in cui l’utente inserisce un ora in una textbox e in una label appare ciò che fa una persona, Marco, a quell’ora. Funziona ma per avere l’ora nella textbox l’utente è costretto a mettere # prima e dopo l’ora e usare il formato a 12h con AM/PM. Un amico mi ha dato il codice con Dtpicker e funziona ma io vorrei poterlo fare con textbox se qualcuno sa come. Vorrei passare al formato 24h e non far mettere gli hashtag.
SE avete un’idea per cortesia fatemelo sapere..
Grazie
Luigi Ghiselli

Codice

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim time As Date
time = TextBox1.Text
Dim act(8) As String
Dim n As Integer
Dim i As Integer = n - 1
act(0) = "sta dormendo"
act(1) = "si sveglia"
act(2) = "è a scuola"
act(3) = "sta pranzando"
act(4) = "fa un sonnellino"
act(5) = "fa i compiti"
act(6) = "sta cenando"
act(7) = "guarda la TV"
If time > #10:00:00 PM# And time < #7:00:00 AM# Then
Label1.Text = "Marco " & act(0)
ElseIf time >= #7:00:00 AM# And time < #8:00:00 AM# Then
Label1.Text = "Marco " & act(1)
ElseIf time > #8:00:00 AM# And time <= #1:00:00 PM# Then
Label1.Text = "Marco " & act(2)
ElseIf time > #1:00:00 PM# And time <= #2:00:00 PM# Then
Label1.Text = "Marco " & act(3)
ElseIf time > #2:00:00 PM# And time <= #4:00:00 PM# Then
Label1.Text = "Marco " & act(4)
ElseIf time > #4:00:00 PM# And time >= #6:00:00 PM# Then
Label1.Text = "Marco " & act(5)
ElseIf time > #4:00:00 PM# And time <= #8:00:00 PM# Then
Label1.Text = "Marco " & act(6)
ElseIf time > #8:00:00 PM# And time <= #10:00:00 PM# Then
Label1.Text = "Marco " & act(7)
End If


End Sub
End Class
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Luigi,
evitare l'hash è possibile, infatti potresti lasciar scrivere all'utente un orario del tipo 21:00 e poi usare il metodo TimeSpan.Parse per ottenere un TimeSpan, che in .NET è il tipo di dato usato per rappresentare gli intervalli temporali.

Quindi:
Dim time As TimeSpan = TimeSpan.Parse(TextBox1.Text)


E poi puoi confrontarlo così:
'Dopo le 22 oppure prima delle 7
If time >= new TimeSpan(22, 0, 0) OR time < new TimeSpan(7, 0, 0) Then
 '...
End If


Prendi spunto da questo esempio interattivo per costruire funzioni riutilizzabili.
https://dotnetfiddle.net/AA52Um

Infatti gli If che hai creato manualmente non si adattano al caso in cui le attività dovessero provenire dal database o dovessero essere diverse in base all'utente (es. Marco compie certe attività mentre Giuseppe ne compie altre in orari diversi).

Qui c'è la documentazione del tipo TimeSpan.
https://msdn.microsoft.com/it-it/library/system.timespan(v=vs.110).aspx

ciao,
Moreno
Modificato da BrightSoul il 02 settembre 2016 22.53 -

Enjoy learning and just keep making
16 messaggi dal 18 agosto 2016
io ho trovato da solo questa soluzione con maskedtextbox...grazie comunque...
codice
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim time As Date
TextBox1.Text = "#" & maskedtextbox1.text & "#"
time = TextBox1.Text
Dim act(8) As String
Dim n As Integer
Dim i As Integer = n - 1
act(0) = "sta dormendo"
act(1) = "si sveglia"
act(2) = "è a scuola"
act(3) = "sta pranzando"
act(4) = "fa un sonnellino"
act(5) = "fa i compiti"
act(6) = "sta cenando"
act(7) = "guarda la TV"
If time > #10:00:00 PM# And time < #7:00:00 AM# Then
Label1.Text = "Marco " & act(0)
ElseIf time >= #7:00:00 AM# And time < #8:00:00 AM# Then
Label1.Text = "Marco " & act(1)
ElseIf time > #8:00:00 AM# And time <= #1:00:00 PM# Then
Label1.Text = "Marco " & act(2)
ElseIf time > #1:00:00 PM# And time <= #2:00:00 PM# Then
Label1.Text = "Marco " & act(3)
ElseIf time > #2:00:00 PM# And time <= #4:00:00 PM# Then
Label1.Text = "Marco " & act(4)
ElseIf time > #4:00:00 PM# And time <= #6:00:00 PM# Then
Label1.Text = "Marco " & act(5)
ElseIf time > #6:00:00 PM# And time <= #8:00:00 PM# Then
Label1.Text = "Marco " & act(6)
ElseIf time > #8:00:00 PM# And time <= #10:00:00 PM# Then
Label1.Text = "Marco " & act(7)
End If


End Sub
End Class

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.