2012-06-12 13 views
6

Quindi diciamo che ho 1400, voglio convertirlo in 14:00Come convertire un tempo di 24 ore per 12 ore in VB.net come hh: mm AM/PM

Ho provato quanto segue:

Dim convertedTime As String = DateTime.ParseExact(theTime,"HHmm", Nothing) 

E me questo darebbe:

6/12/2012 02:00:00 PM

non voglio il data parte, né ho bisogno dei secondi. Tutto ciò di cui ho bisogno sono le 2:00 PM

Come posso ottenere questo? Grazie!

+0

ParseExact non restituisce una stringa. Hai Option Strict On? –

risposta

10

Il metodo ParseExact restituisce un valore DateTime, non una stringa. Se lo assegni a una variabile stringa, la convertirai automaticamente, che usa la formattazione standard.

Se si desidera in un formato specifico, quindi formattare il valore DateTime come una stringa:

Dim d As DateTime = DateTime.ParseExact(theTime,"HHmm", Nothing); 
Dim convertedTime As String = d.ToString("hh:mm tt") 
+0

grazie al lavoro come un fascino ~ – eastboundr

0

Ci sono due modi per raggiungere questo obiettivo.

Opzione 1 (usando standard date and time format strings):

Dim theTime As DateTime = new DateTime(2008, 4, 10, 6, 30, 0) 
Dim convertedTime As String = 
    theTime.ToString("t", CultureInfo.CreateSpecificCulture("en-us")) 

Opzione 2 (usando custom date and time format strings):

Dim theTime As DateTime = new DateTime(2008, 4, 10, 6, 30, 0) 
Dim convertedTime As String = theTime.ToString("hh:mm tt") 

In entrambi i casi sarà convertedTime6:30 AM

+0

Non hai bisogno della cultura 'en-us', puoi usare' CultureInfo.InvariantCulture'. –

+1

@TimSchmelter la stringa di formato standard 't' non restituirà AM/PM quando si utilizza CultureInfo.InvariantCulture. Vedere https://compilify.net/1u5 –

+0

Siamo spiacenti, hai ragione, ho trascurato le differenze nelle opzioni 1 e 2. –

1
Dim theTime = New Date(2012, 6, 12, 14, 0, 0) 
Dim formatted = theTime.ToString("h:mm tt", Globalization.CultureInfo.InvariantCulture) 

Custom Date and Time Format Strings

+0

Ti manca il codice che analizza la parte 1400. – JDB

+0

@ Cyborgx37: questa è la parte fuorviante di questa domanda. In realtà OP non ha problemi con l'analisi di 1400 a un DateTime: _ "...E mi darebbe questo: 6/12/2012 02:00:00 PM Non voglio la parte della data, né ho bisogno dei secondi. Tutto ciò di cui ho bisogno sono le 2:00 PM "_ Vuole solo convertire una variabile DateTime in una stringa con il formato corretto. –

1

Label1.Text = Format(Now, "hh:mm"): testo di Label1 = 10:26 (o qualunque sia il tempo è)

Label1.Text = Format(Now, "hh:mm tt"): il testo di Etichetta = 22:26

Label1.Text = Format(Now, "dddd dd, MMMM, YYYY"): testo di Label1 = Giovedi 21 agosto, 2014 (o qualunque sia la data è)

+0

Assicurati di usare una formattazione corretta (backtick per inlinecode), in quanto rende la tua risposta più leggibile. [aiuto] (http://stackoverflow.com/help) e testare la barra degli strumenti dell'editor, quindi vedi cosa è possibile. – TimWolla

1
Label1.Text = Now.ToShortTimeString.ToString() (10:26 PM) 

Label1.Text = Now.ToLongTimeString.ToString() (10:26:30 PM) 
Problemi correlati