整小时和小数小时双精度值转换为 12 小时制格式时间

Whole and fractional hours Double value convert to 12-hour Clock Format time

本文关键字:小时 时间 格式 小数 双精度 转换      更新时间:2023-09-26

在我的MongoDB数据库中,有一个名为BusSchedule的集合,其中包含以下字段

巴士时刻表

    -
  • 双倍开始时间 -->包含整小时和小数小时
  • -
  • 双结束时间 -->包含整小时和小数小时
  • -字符串 12 小时格式开始时间
  • -字符串 12 小时格式结束时间

以下是可能存在的一些典型值

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"

我想知道Microsoft是否有某种现有的库,可以轻松地将整小时和小数小时的双精度数据类型表示转换为 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 "输入字符串格式不正确"。

我不想浪费时间编写代码来进行上述翻译。有人可以告诉我Microsoft或某些第三方开源库是否会处理上述要求吗?

谢谢@Edin:

以下是我最终编码的内容:

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

您可以创建新的日期时间:

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

然后使用 ToStringToShortTimeString 格式化时间:

string time = dateTime.ToShortTimeString();

或者,如果您明确希望使用 AM/PM 进行 12h 格式:

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