Telerik RadTimePicker关于设置结束时间的时间选择问题

本文关键字:时间 结束 选择 问题 设置 RadTimePicker 于设置 Telerik | 更新日期: 2023-09-27 18:25:48

我使用ASP.NET 3.5C#telerik asp-net ajax版本2012.1.515.35。

我在UserControl中有一个RadTimepicker。

我想限制未来时间的进入。假设我的电脑上有上午7:00,那么用户可以选择/插入最长时间7:00,不超过这个时间。

我还需要根据登录用户的时区显示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)金奈、加尔各答、孟买、新德里"。

将电脑的时间设置为上午8:30至上午10:30,然后运行项目。时间视图将以1小时为间隔显示23:00之前的时间,但选择任何时间都会显示错误图标,即RadTimePicker内的无效时间。

你知道为什么会这样吗?

谢谢。。

Telerik RadTimePicker关于设置结束时间的时间选择问题

尝试设置

rtpVitals.TimeView.StartTime = DateTime.Now.TimeOfDay;