2012-06-12 65 views
6

Vì vậy, chúng ta hãy nói rằng tôi có năm 1400, tôi muốn chuyển đổi nó vào 14:00Làm thế nào để chuyển đổi một thời gian 24 giờ đến 12 giờ trong VB.net như hh: mm AM/PM

tôi thử như sau:

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

Và nó sẽ cho tôi điều này:

6/12/2012 02:00:00 PM

tôi không muốn phần ngày, tôi cũng không cần giây. Tất cả những gì tôi cần là 2:00 PM

Làm cách nào để đạt được điều này? Cảm ơn!

+0

ParseExact không trả lại chuỗi. Bạn có Tùy chọn Nghiêm ngặt không? –

Trả lời

10

Phương thức ParseExact trả về giá trị DateTime, không phải là một chuỗi. Nếu bạn gán nó vào một biến chuỗi, bạn sẽ tự động chuyển đổi nó, sử dụng định dạng chuẩn.

Nếu bạn muốn nó trong một định dạng cụ thể, sau đó định dạng giá trị DateTime như là một chuỗi:

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

cảm ơn công việc như một nét duyên dáng ~ – eastboundr

0

Có hai cách để đạt được điều này.

Lựa chọn 1 (sử dụng 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")) 

Lựa chọn 2 (sử dụng 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") 

Trong cả hai trường hợp convertedTime sẽ 6:30 AM

+0

Bạn không cần văn bản 'en-us', bạn có thể sử dụng' CultureInfo.InvariantCulture'. –

+1

@TimSchmelter chuỗi định dạng chuẩn 't' sẽ không trả về AM/PM khi sử dụng CultureInfo.InvariantCulture. Xem https://compilify.net/1u5 –

+0

Xin lỗi, bạn nói đúng, tôi đã bỏ qua sự khác biệt trong tùy chọn 1 và 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

Bạn thiếu mã phân tích phần 1400. – JDB

+0

@ Cyborgx37: Đó là phần gây hiểu lầm của câu hỏi này. Trên thực tế OP không có vấn đề với phân tích 1400 đến một DateTime: _ "...Và nó sẽ cho tôi điều này: 6/12/2012 02:00:00 PM Tôi không muốn phần ngày, tôi cũng không cần giây. Tất cả tôi cần là 2:00 PM "_ Anh ấy chỉ muốn chuyển đổi một biến DateTime thành một String với định dạng thích hợp. –

1

Label1.Text = Format(Now, "hh:mm"): văn bản Label1 của = 10:26 (hoặc bất kỳ thời điểm đó là)

Label1.Text = Format(Now, "hh:mm tt"): Nhãn của text = 10:26

Label1.Text = Format(Now, "dddd dd, MMMM, YYYY"): văn bản Label1 của = Thứ năm 21, Tháng Tám, 2014 (hoặc bất cứ ngày là)

+0

Hãy chắc chắn sử dụng định dạng thích hợp (backticks cho inlinecode), vì nó làm cho câu trả lời của bạn dễ đọc hơn. [help] (http://stackoverflow.com/help) và kiểm tra thanh công cụ của trình soạn thảo để xem điều gì là có thể. – TimWolla

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

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

Hãy thử Một này ...

Dim TimeNow As String 
    TimeNow = TimeOfDay.ToString("h:mm:ss tt") 
Các vấn đề liên quan