ti faccio un esempio completo da adattare.
Per prima cosa voglio l'orario nel formato solo ora da 0 a 23 oppure ore:minuti da 0:0 a 23:59
detto questo:
pagina aspx
codice:
<%@ Page language="c#" Codebehind="validazione ora.aspx.cs" AutoEventWireup="false" Inherits="prova_web_c_charp.validazione_ora" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>validazione ora</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="FlowLayout">
<form id="Form1" method="post" runat="server">
<table>
<tr>
<td>
<label for="ora1" title="hh:mm">Ora1 (h:m):</label>
</td>
<td>
<asp:TextBox runat="server" id="ora1" title="hh:mm" Width="80" />
</td>
<td>
<asp:RequiredFieldValidator Runat="server" ID="Requiredfieldvalidator_ora1" ControlToValidate="ora1" ErrorMessage="L'ora di riunione è obbligata" ToolTip="L'ora di riunione è obbligata" style="CURSOR:help">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator_ora1" Runat="server" ControlToValidate="ora1" ErrorMessage="Introdurre l'ora di riunione nel formato hh:mm" ToolTip="Introdurre l'ora di riunione nel formato hh:mm" ValidationExpression="^(([01]?\d)|(2[0-3]))(:([0-5]?\d))?$" style="CURSOR:help">*</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td>
<label for="ora2" title="hh:mm">Ora2 (h:m):</label>
</td>
<td>
<asp:TextBox runat="server" id="ora2" title="hh:mm" Width="80" />
</td>
<td>
<asp:RequiredFieldValidator Runat="server" ID="Requiredfieldvalidator_ora2" ControlToValidate="ora2" ErrorMessage="L'ora di riunione è obbligata" ToolTip="L'ora di riunione è obbligata" style="CURSOR:help">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="Regularexpressionvalidator_ora2" Runat="server" ControlToValidate="ora2" ErrorMessage="Introdurre l'ora di riunione nel formato hh:mm" ToolTip="Introdurre l'ora di riunione nel formato hh:mm" ValidationExpression="^(([01]?\d)|(2[0-3]))(:([0-5]?\d))?$" style="CURSOR:help">*</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td>
<label title="hh:mm">Differenza (h:m):</label>
</td>
<td>
<asp:TextBox runat="server" id="differenza" title="hh:mm" Width="80" ReadOnly="True" />
</td>
<td>
<asp:Button ID="button1" Runat="server" Text="Calcola differenza" />
</td>
</tr>
</table>
</form>
</body>
</HTML>
codice sottostante:
codice:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace prova_web_c_charp
{
/// <summary>
/// Descrizione di riepilogo per validazione_ora.
/// </summary>
public class validazione_ora : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox ora1;
protected System.Web.UI.WebControls.RequiredFieldValidator Requiredfieldvalidator_ora1;
protected System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidator_ora1;
protected System.Web.UI.WebControls.RequiredFieldValidator Requiredfieldvalidator_ora2;
protected System.Web.UI.WebControls.RegularExpressionValidator Regularexpressionvalidator_ora2;
protected System.Web.UI.WebControls.TextBox differenza;
protected System.Web.UI.WebControls.Button button1;
protected System.Web.UI.WebControls.TextBox ora2;
private void Page_Load(object sender, System.EventArgs e)
{
// Inserire qui il codice utente necessario per inizializzare la pagina.
}
#region Codice generato da Progettazione Web Form
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: questa chiamata è richiesta da Progettazione Web Form ASP.NET.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Metodo necessario per il supporto della finestra di progettazione. Non modificare
/// il contenuto del metodo con l'editor di codice.
/// </summary>
private void InitializeComponent()
{
this.button1.Click += new System.EventHandler(this.button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void button1_Click(object sender, System.EventArgs e)
{
//recupero ora1
string ora1 = this.ora1.Text;
string[] ore1 = ora1.Split(':');
int minuti1 = (ore1.Length == 2)? int.Parse(ore1[0])*60 + int.Parse(ore1[1]):int.Parse(ore1[0])*60;
//recupero ora2
string ora2 = this.ora2.Text;
string[] ore2 = ora2.Split(':');
int minuti2 = (ore2.Length == 2)? int.Parse(ore2[0])*60 + int.Parse(ore2[1]):int.Parse(ore2[0])*60;
int differenza_minuti = (minuti1 > minuti2)?minuti1 - minuti2:minuti2 - minuti1;
this.differenza.Text = (differenza_minuti / 60).ToString() + ":" + (differenza_minuti % 60).ToString();
}
}
}