我有以下代碼,當前給出了一小時/分鐘(24小時格式)的時間表列表。我需要更改string.format以顯示小時/分鐘上午或下午(12小時格式)。使用AM/PM將字符串格式和時間範圍轉換爲12小時格式
var availableTimes =
_appointmentService.GetAvailableHours(date, appointmentId)
.Select(x => string.Format("{0:D2}:{1:D2}", x.Hours, x.Minutes));
這樣做的最好方法是什麼?反正我沒有看到時間。
*以下是它使用的GetAvailableHours方法。
public IEnumerable<TimeSpan> GetAvailableHours(DateTime? date, int? appointmentId)
{
if (date == null) return null;
var hours = new List<DateTime>();
for (var ts = new TimeSpan(); ts <= new TimeSpan(23, 30, 0); ts = ts.Add(new TimeSpan(0, 30, 0)))
{
hours.Add(date.Value + ts);
}
var booked = _appointmentRepository.Get
.Where(x =>
(!appointmentId.HasValue || x.Id != appointmentId))
.Select(x => x.ScheduledTime).ToList();
//return available hours from shifts
var workingHours = from h in hours
from s in
_scheduleRepository.Get.Where(
x => x.ShiftStart <= h && x.ShiftEnd >= EntityFunctions.AddHours(h, 1))
where
s.ShiftStart <= h && s.ShiftEnd >= h.AddHours(-1) &&
booked.Count(x => x == h) == 0
select h.TimeOfDay;
//match available hours with another appointment
return workingHours.Distinct();
}
但是關於是否將時間超過24個呢? –
這是可能的一個時間跨度? – devfunkd
當然可以。試試這個'TimeSpan.FromHours(100);'。 –