2015-07-28 66 views
0

現在我正在尋找一個免費的可靠的TimePicker控件,用於我的MVC應用程序,直到我厭倦了找到一個,並決定讓我自己使用C#..什麼是在自定義TimePicker中在C#中聲明時間變量的最佳方式

我這樣做,它工作正常(隨意複製或重複使用..):

public static class OpeningTimesList 
{ 

    /// <summary> 
    /// Provides a listItems of opening hours to use in an HTML DropDownListFor helper. 
    /// </summary> 
    /// <param name="time"></param> 
    /// <returns></returns> 
    public static List<SelectListItem> GetOpeningHours(string time) 
    { 
     var selectOptions = new string[] 
     { 
      "07:00", 
      "07:30", 
      "08:00", 
      "08:30", 
      "09:00", 
      "09:30", 
      "10:00", 
      "10:30", 
      "11:00", 
      "11:30", 
      "12:00", 
      "12:30", 
      "13:00", 
      "13:30", 
      "14:00", 
      "14:30", 
      "15:00", 
      "15:30", 
      "16:00", 
      "16:30", 
      "17:00", 
      "17:30", 
      "18:00", 
      "18:30", 
      "19:00", 
      "19:30", 
      "20:00", 
      "20:30", 
      "21:00", 
      "21:30", 
      "22:00", 
      "22:30" 
     }; 

     return GetDropDownList(selectOptions, time); 
    } 
    /// <summary> 
    /// Gets List Items in Text only, instead of a combination of text and value. 
    /// </summary> 
    /// <param name="selectOptions"></param> 
    /// <param name="selectedOption"></param> 
    /// <returns></returns> 
    private static List<SelectListItem> GetDropDownList(string[] selectOptions, string selectedOption) 
    { 
     var listItems = new List<SelectListItem>(); 

     foreach (var option in selectOptions) 
     { 
      listItems.Add(new SelectListItem 
      { 
       Text = option, 
       Selected = string.Compare(option, selectedOption, StringComparison.CurrentCultureIgnoreCase) == 0 
      }); 
     } 
     return listItems; 
    } 
} 

使用年齡在MVC剃刀:

@Html.DropDownListFor(x => x.StartFrom, Website.ViewModels.ViewHelpers.OpeningTimesList.GetOpeningHours(Model.StartFrom.ToString())) 

我的問題是我的StartFrom屬性不是string;這是一個TimeSpan(或可能是它應該是一個DateTime ..我確定轉換ToString()或投在後面的代碼,但理想情況下,我不應該這樣做。使用String時間項很容易 - 但我應該用什麼來使這更好;我用DateTime還是我用TimeSpan

因此,在一個行:你會用什麼來表示一個時間值,如 - 例如:08:30你會使用一個TimeSpanDateTime。?

非常感謝。

+0

我覺得'DateTime'比'TimeSpan'更合適。 –

+0

如果你只使用時間,使用TimeSpan我認爲 –

+1

TimeSpan對此很好。您可以隨時使用: TimeSpan.Parse(yourListItemString) 將其製作爲TimeSpan並附加到任何Date(DateTime.Date)以創建整個DateTime值。 –

回答

1

沒有。DateTime代表日期和時間,TimeSpan a cer tain 長度的時間。你的變量表示一個可能在任何一天發生的重複時刻。

因此,無論如何妥協,use the one that best fits your use case - 或看看NodaTime's Period

當然,這取決於你想要對結果做什麼。您只需使用TimeSpan並將其添加到某個DateTime.Date即可添加從TimeSpam到日期當天的小時數和分鐘數。

相關問題