2012-06-06 2 views
0

В моей TimeIn.aspx файл, я отображение часов с помощью следующего кода:TimeSpan преобразование не

<div> 
    <div> 
     <asp:ScriptManager runat="server" ID="ScriptManager1" /> 
     <br /> 

     <asp:UpdatePanel runat="server" ID="UpdatePanel1"> 
      <ContentTemplate> 
       <asp:Label runat="server" ID="Label4" Text="Current Time: "/> 
       <asp:Label runat="server" ID="Label2" /> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" /> 
      </Triggers> 
     </asp:UpdatePanel> 
     <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="1000" /> 
    </div> 
    <br /> 

    <br /> 
    <asp:Button ID="Button1" runat="server" Text="Check In" OnClick="CheckIn" /> 
</div> 

Часы работает отлично. Затем в TimeIn.aspx.cs файле, я написал CheckIn метод:

protected void CheckIn(object sender, EventArgs e) 
{ 
    TimeSpan currtime = TimeSpan.Parse(Label2.Text); 
    int eid = Convert.ToInt32(Session["EID"]); 
    DBClient = new DBConnection(); 
    DBClient.CheckIn(eid, currtime, DateTime.Now.Date.ToString()); 
    Response.Redirect("ECheckin.aspx"); 
} 

В базе данных, тип данных CheckinTime столбца Time(7).
Когда срабатывает событие CheckIn, он дает исключение в первой строке TimeSpan.Parse, поскольку Label2.Text имеет время с добавленным временным форматом (AM/PM).
Примерное значение Label2.Text: 1:41:28 PM
Какое лучшее решение для решения этой проблемы? Я действительно хочу использовать Time тип данных в sql-сервере, потому что позже мне придется выполнять вычисления по временному полю.

+0

Положите значение label2.Text/Database в questi на. –

+0

'В базе данных столбцом данных типа CheckinTime является Time (7) .'. Означает?? –

+0

@Nikhil Agrawal Я использую Sql Server 2008 в качестве базы данных. В моей таблице DB приложения есть столбец CheckinTime, типом данных которого является Time (7). Я хочу сохранить время проверки в этом поле. – Azeem

ответ

3

Временной интервал в основном отличается от двух раз.

Или мы можем сказать секундомер, где значение в секундомере - это время, прошедшее с момента запуска часов и остановки часов.

Это не имеет никакого отношения к AM или PM.

Timespan = Date1 - Date2 

Я думаю об ошибке, что вы получаете будет FormatException

Ваш формат этикетки Текст является DateTime поэтому AM/PM.

Вместо TimeSpan попробуйте использовать DateTime экземпляр

как

DateTime currtime = DateTime.Parse(Label2.Text); 
+0

спасибо, я попробую и вернусь к вам. – Azeem

+0

Я сомневаюсь в вашем заявлении «Временная разница - это в основном разница между двумя моментами». Timespan - это структура, представляющая временной интервал ... вот и все. Ваше заявление приводит к восприятию того, что временные рамки могут удерживать только ту разницу, которая, по моему мнению, неверна. – ABH

+0

Ваш комментарий поддерживает меня не противоречит мне. Вы сказали, что «Timespan - это структура, представляющая временной интервал». Это то, что я сказал. Интервал - разница. Я выбрал разницу. Вы выбрали Интервал. Одно и то же. Имя - это временной интервал, означающий интервал между двумя моментами. –

0

вы можете сделать добавление к DATETIME отрезок времени, как показано ниже

TimeSpan timespan = new TimeSpan(03,00,00); 
    DateTime time = DateTime.Today.Add(timespan); 
    string displayTime = time.ToString("hh:mm tt"); 

вместо 03,00,00 вы можете сразу пройти ваша переменная timepan

Смежные вопросы