我正在使用ASP.NET 3.5
C#
,telerik asp-net ajax
版本2012.1.515.35。
我在UserControl中有一个RadTimepicker。
我想限制未来时间的输入。假设我的计算机上午7点,那么用户可以选择/插入最长时间上午7点,不超过该时间。
我还需要按照登录用户的时区显示RadTimepicker的时间。为此,我正在使用DateTime.UTCNow并使用一些扩展方法将其转换为用户的时间。
ascx页面的RadTimepicker控件的配置是:
<telerik:RadTimePicker ID="rtpVitals" runat="server" Width="85" DateInput-DateFormat="HH:mm"
TimeView-TimeFormat="HH:mm" Skin="Hay">
<Calendar UseRowHeadersAsSelectors="False" UseColumnHeadersAsSelectors="False" ViewSelectorText="x">
</Calendar>
<TimeView CellSpacing="-1" TimeFormat="HH:mm" OnClientTimeSelected="OnClientTimeSelected">
</TimeView>
<TimePopupButton CssClass="" ImageUrl="" HoverImageUrl="" onblur="hideTimePopup('rtpVitals');">
</TimePopupButton>
<DatePopupButton Visible="False" CssClass="" ImageUrl="" HoverImageUrl=""></DatePopupButton>
<DateInput CssClass="txtbox txtBack-Color" BorderColor="#D0D1AE" BorderStyle="Solid"
BorderWidth="1" ForeColor="#333333" onblur="enterDateTime();">
</DateInput>
</telerik:RadTimePicker>
在UserControl的Page_PreRender()
事件中,我调用以下方法来设置RadTimePicker的属性:
private void setTimePicker()
{
try
{
TimeZoneInfo t = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
DateTime d = DateTime.UtcNow.ToUserTime(t);
rtpVitals.TimeView.StartTime = new TimeSpan(0, 0, 0);
if (d.Hour < 1)
{
rtpVitals.TimeView.Interval = new TimeSpan(0, d.Minute/2, 0);
if (d.Minute <= 1)
{
rtpVitals.TimeView.Interval = new TimeSpan(0, 0, d.Second/2);
}
}
else if (d.Hour < 12)
{
rtpVitals.TimeView.Interval = new TimeSpan(0, 30, 0);
}
else
{
rtpVitals.TimeView.Interval = new TimeSpan(1, 00, 0);
}
rtpVitals.TimeView.EndTime = new TimeSpan(d.Hour, d.Minute, d.Second);
}
catch (Exception ex)
{
throw ex;
}
}
转换时间的扩展方法如下:
public static DateTime ToUserTime(this DateTime utcTime, TimeZoneInfo toUserTimeZone)
{
try
{
utcTime = DateTime.SpecifyKind(utcTime, DateTimeKind.Unspecified);
//Create the userTime object
//Set it to UTC time by default. It would be changed later
DateTime userTime = utcTime;
//Convert the time
TimeZoneInfo fromTimeZone = TimeZoneInfo.Utc;
userTime = TimeZoneInfo.ConvertTime(utcTime, fromTimeZone, toUserTimeZone);
//Return the TimeZone
return userTime;
}
catch
{
throw;
}
}
仅供参考:我的电脑的时区是“(UTC + 5:30)Chennai,Kolkata,Mumbai,New Delhi ”。
将电脑的时间设置为上午8:30至上午10:30 ,然后运行项目。时间视图将显示时间长达23:00,间隔为1小时,但选择任何时间都会显示错误图标,即RadTimePicker内的无效时间。
你知道为什么会这样吗?
谢谢..
答案 0 :(得分:0)
尝试设置
rtpVitals.TimeView.StartTime = DateTime.Now.TimeOfDay;