2016-03-11 30 views
1

在我的MongoDB數據庫中,有收集稱爲BusSchedule具有以下字段整數和分數小時雙值轉換爲12小時制時間

BusSchedule

  • - 雙開始時間 - >包含全和分數小時
  • - 雙結束時間 - >包含整數和分數小時
  • -string 12hourFormatStartTime
  • -string 12hourFormatEndTime

這裏有可能存在

StartTime = 6.5 --> contains whole and fractional hours 
EndTime = 9.5 --> contains whole and fractional hours 
12hourFormatStartTime = "06:30 AM" 
12hourFormatEndTime = "09:30 AM" 

StartTime = 8.5 --> contains whole and fractional hours 
EndTime = 14.25 --> contains whole and fractional hours 
12hourFormatStartTime = "08:30 AM" 
12hourFormatEndTime = "02:15 PM" 

我在想,如果微軟有某種現有的庫,可以很容易的整數和分數小時雙數據類型表示轉換到12的一些典型值小時鐘格式時間。

StartTime = 8.5 -------translated to-----> 12hourFormatStartTime = "08:30 AM" 
EndTime = 14.25 -------translated to-----> 12hourFormatEndTime = "02:15 PM" 

StartTime = 6.5 -------translated to-----> 12hourFormatStartTime = "06:30 AM" 
EndTime = 9.5 -------translated to-----> 12hourFormatEndTime = "09:30 AM" 

我寧願如果我可以使用C#。我試圖做的:

Double wholeAndFractionalHours = 14.25; 
    TimeSpan.FromHours(wholeAndFractionalHours).ToString(@"hh:mm tt")) 

但它拋出一個System.FormatException「輸入字符串的不正確的格式。」

我不想浪費時間編寫代碼來完成上述翻譯。有人可以告訴我,如果微軟或某個第三方開源庫會處理上述要求嗎?

感謝@Edin:

這裏是我最終結束了編碼:

Double wholeAndFractionalHours = 14.25; 
String timeIn12hourClockFormat = (new DateTime().AddHours(wholeAndFractionalHours)).ToString("h:mm tt", CultureInfo.InvariantCulture); 
+0

哪一個呢? JavaScript的? C#?這與MongoDB有什麼關係?詢問圖書館和工具是無關緊要的。這也是很容易編寫的代碼。 –

+0

對不起,我寧願如果我可以使用C#。我試圖做TimeSpan.FromHours(logEventOfInterest.StartTime).ToString(@「hh:mm tt」)),但它會拋出一個System.FormatException「輸入字符串的格式不正確。」 –

+0

咦?基礎數學怎麼樣? 0.5 = 60 = 30; 14> 12因此「PM」等。每種語言都有時間實現,您可以輸入「小時」和「分鐘」。大多數人甚至認爲你14歲是2PM。 –

回答

2

您可以創建新的日期時間:

var dateTime = new DateTime().AddHours(6.5); 

然後用ToStringToShortTimeString格式化時間:

string time = dateTime.ToShortTimeString(); 

或者,如果要明確帶AM/PM 12小時格式:

string ampm = dateTime.ToString("h:mm tt", CultureInfo.InvariantCulture); 
+0

我認爲你需要'new DateTime()。Date.AddHours(...)',否則輸出將根據當前時間而改變 – Jamiec

+1

不,你不需要。 'new DateTime()'創建日期時間「01.01.0001 00:00:00」。如果你使用'DateTime.Now',比你需要'DateTime.Now.Date' – Edin

+0

對不起,你是對的。我誤解爲'DateTime.Now'。 – Jamiec

相關問題