Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    106

    Convertire stringa in ora e calcolare differenza

    Salve ragazzi ho il seguente problema ho due campi textbox che corrispondono ad "dalle ore" "alle ore" che vengono digitati dall'utente.
    Dovrei calcolare la differenza in ore tra le due stringhe digitate
    Spero di essere stato chiaro e se sapete anche come controllare che l'ora sia digitata nel formato corretto.

    Grazie a tutti.

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Re: Convertire stringa in ora e calcolare differenza

    Originariamente inviato da spignex
    Salve ragazzi ho il seguente problema ho due campi textbox che corrispondono ad "dalle ore" "alle ore" che vengono digitati dall'utente.
    Dovrei calcolare la differenza in ore tra le due stringhe digitate
    Spero di essere stato chiaro e se sapete anche come controllare che l'ora sia digitata nel formato corretto.

    Grazie a tutti.
    ma dai su :maLOL: non ci credo che sia così difficile che ci vuole estrarre da una stringa, per esempio i tre token: ore:minuni:secondi, convertire tutto in secondi, fare la differenza, e riconvertire tutto in ore:minuti:secondi

    comunque, io farei così:
    1) validare l'ora con una espressione regolare tipo hh:mm
    2) convertire tutto in minuti con m = mm + hh*60
    3) fare la differenza tra due orari
    4) riconvertire in hh:mm
    Pietro

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    106

    Convertire stringa in ora e calcolare differenza

    Come faccio a validare l'ora con una espressione regolare tipo hh:mm.
    E per caso mi potresti fare un'esempio.

    Grazie

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    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();
    
    		}
    	}
    }
    Pietro

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    106
    Pietro scusa ti volevo chiedere se era possibile devo fare la stessa cosa per le ore nel senso l'utente digita
    ora1= 1:00 ora2=0.30
    devo sommare lo straordinario e metterlo in un texbox.
    Mi puoi fare un'esempio su come fare questo e non chimarmi rompiscatole possibilmente in VB.net.

    Grazie e scusa ancora

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da spignex
    Pietro scusa ti volevo chiedere se era possibile devo fare la stessa cosa per le ore nel senso l'utente digita
    ora1= 1:00 ora2=0.30
    devo sommare lo straordinario e metterlo in un texbox.
    Mi puoi fare un'esempio su come fare questo e non chiamarmi rompiscatole possibilmente in VB.net.

    Grazie e scusa ancora
    a parte che a me non lo pagano lo straordinario e a parte il fatto che ho sudato le classiche 7 camicie per farlo in c#

    1) usa l'esempio e adattalo a te

    2) cambia eventualmente l'espressione regolare

    3) visto che entrambi usiamo il basic, cerchiamo di non fare brutte figure con tutte (poche) le ragazze che frequentano il forum e che usano il c# :maLOL:


    ps.

    Anche da voi se uno fa per esempio 16 minuti di straordinario, gli viene conteggiata la mezzora?
    Pietro

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    106
    Se non ci stavo sbattendo la testa da un po' non te l'avrei chiesto.
    Lascia stare.
    Grazie lo stesso

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da spignex
    Se non ci stavo sbattendo la testa da un po' non te l'avrei chiesto.
    Lascia stare.
    Grazie lo stesso
    io volevo solo un po' scherzare

    comunque non ho capito molto quello che vuoi.

    1) con una espressione regolare obblighi l'utente a introdurre solo valori validi, altrimenti non puoi fare il calcolo
    (qui si può cambiare l'espressione regolare, ma questo dipende da quello che vuoi ottenere)


    2) una volta fatto il submit, la differenza tra i due orari è semplice: basta moltiplicare le ore per 60 e sommarle ai minuti


    3) il codice è (o dovrebbe essere) in c#, ma credo che non sia difficile tradurlo in basic
    Pietro

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    Originariamente inviato da spignex
    Se non ci stavo sbattendo la testa da un po' non te l'avrei chiesto.
    Lascia stare.
    Grazie lo stesso
    mah...

  10. #10
    Utente di HTML.it L'avatar di MMArc#
    Registrato dal
    Jul 2013
    Messaggi
    47
    prova così


    string data = "01/01/2000 ";
    datetime differenza;

    differenza = Convert.TodateTime(data + txtOraA.text) - Convert.TodateTime(data + txtOraDa.text)
    I sogni sono realtà in anticipo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.