2016-02-10 42 views
0

我有一个内置的查询,它使用了两种类型的日期时间的开始日期和结束日期。然后我有另一个名为withinPastTime的变量,它应该在一个字符串和查询的基础上花费很多小时。例如,如果用户输入24,它将在24小时内搜索。如何将字符串转换为日期时间

C#

withinthepast.Text = History.QueryInfo.WithinPastTime; 
       startdatetext.Text = DateTime.Parse(History.QueryInfo.StartDate).ToString("M/d/yyyy"); 
       enddatetext.Text = DateTime.Parse(History.QueryInfo.EndDate).ToString("M/d/yyyy"); 

ASP观点

<div class="row-fluid"> 
         <div class="span8"> 

          <div class="row"> 
           <div class="span1"> 
            <asp:RadioButton ID="RadioButton1" runat="server" Checked="True" GroupName="DateQuery"/> 
           </div> 
           <div class="span11"> 
            <span class="label">Start Date</span><br /> 
            <asp:TextBox ID="startdatetext" runat="server" MaxLength="10"></asp:TextBox> 
            <asp:Image ID="startimage" runat="server" ImageUrl="Images/calender16.png" /> 
            <!-- note: do not add and ID attribute to the AJAX:CalenderExtender --> 
<%--         <ajax:CalenderExtender runat="server" TargetControlID="startdatetext" PopupButtonID="startimage" />--%> 
           </div> 
          </div> 
          <div class="row"> 
           <div class="span1"> 
           </div> 
           <div class="span11"> 
            <span class="label">&nbsp;End Date&nbsp;</span><br /> 
            <asp:TextBox ID="enddatetext" Enabled="true" runat="server" MaxLength="10"></asp:TextBox> 
            <asp:Image ID="endimage" runat="server" ImageUrl="Images/calender16.png" /> 
            <!-- note: do not add and ID attribute to the AJAX:CalenderExtender --> 
<%--         <AJAX:CalenderExtender runat="server" TargetControlID="enddatetext" PopupButtonID="endimage" />--%> 
           </div> 
          </div> 
          <br /> 
          OR 
          <br /> 
          <br />      
          <div class="row"> 
           <div class="span1"> 
            <asp:RadioButton ID="RadioButton2" runat="server" GroupName="DateQuery"/> 
           </div> 
           <div class="span11"> 
            <span class="label">Within the past (hours)</span><br /> 
            <asp:TextBox ID="withinthepast" Enabled="true" runat="server" Text="1"></asp:TextBox> 
            <asp:Image ID="upimage" runat="server" ImageUrl="Images/arrowup16.png" /> 
            <asp:Image ID="downimage" runat="server" ImageUrl="Images/arrowdown16.png" /> 
            <!-- note: do not add and ID attribute to the NumericUpDownExtender --> 
            <ajax:NumericUpDownExtender runat="server" Minimum="1" Width="75" 
             TargetControlID="withinthepast" TargetButtonUpID="upimage" TargetButtonDownID="downimage" /> 
           </div> 
          </div> 

         </div> 
         <div class="span4"> 
          <div class="btn-group btn-group-vertical" data-toggle="buttons-checkbox"> 
           <span class="label" style="margin-top: 5px;">Dates in Range</span> 
           <asp:CheckBoxList ID="timerange" runat="server" style="border-style:solid;float:left;border-width:1px;margin:10px;" Width="120px"> 
            <asp:ListItem Text="Scheduled At" Selected="True"></asp:ListItem> 
            <asp:ListItem Text="Scheduled For" Selected="True"></asp:ListItem> 
            <asp:ListItem Text="Submitted" Selected="True"></asp:ListItem> 
            <asp:ListItem Text="Started" Selected="True"></asp:ListItem> 
            <asp:ListItem Text="Completed" Selected="True"></asp:ListItem> 
           </asp:CheckBoxList> 
          </div> 
         </div> 
        </div> 

    DateTime withinthepast = Date.Evaluate(m_Owner.QueryInfo.WithinPastTime, DateTime.Now(- **this is where my withinthepastvariable would go telling DateTime.Now how many hours to subtract)); 

有什么想法?

回答

3

您可以切换到withinPastTime是一个整数,那么你可以使用AddHours()方法,像这样:

DateTime.Now.AddHours(withinPastTime); 

可以传递负值,使其回到过去。

这也将限制任何输入是一个有效的数字,其他刺会抛出异常。

+0

正确亨克。我得到的错误是运算符' - '不能应用于'string'类型的操作数。我已经在OP中发布了更多的语法,让你们知道我在看什么。 – Tim

+0

唯一的问题是它在类TextBox:WebControl中,所以它必须是一个字符串。因此,我得到一个错误“不能隐式转换类型'字符串'为'int'。” – Tim

+0

@Tim所以将字符串转换为int。我假设在表单上有一些验证来将条目限制为有效的数字,如果不是,这是一个完美的时间来添加一些! –

2

我想你需要的是AddHours

DateTime.Now.AddHours(-pastHours) 
相关问题