Subtração de horas e retorno so em minutos

Ola!! estou criando uma aplicação em c# no formulario onde subtraio hora1 com hora2 e a label me mostra os minutos trabalhados, no caso ate agora so consegui que a aplicacao me retornasse em horas porem quero em minutos trabalhados. Tipo se eu subtrair 21:00 - 22:00 teria que ser 00:60:00, porem me mostra 01:00:00 em vista esta certo so que quero que me mostre em minutos nao em horas

DateTime hora = Convert.ToDateTime(txtInicio.Text);
DateTime hora1 = Convert.ToDateTime(txtFinal.Text);

TimeSpan resultado = Convert.ToDateTime(txtInicio.Text) 
                                    - 
                     Convert.ToDateTime(txtFinal.Text);

lbltotal.Text = resultado.ToString();

O correto é 01:00:00, porque, não tem 60 segundos, então o que pode ser feito para pegar os minutos:

using System;

class MainClass {
  

  static void Main() {
    DateTime d1 = Convert.ToDateTime("21:00");
    DateTime d2 = Convert.ToDateTime("22:00");
    
    System.Console.WriteLine((d2 - d1).TotalMinutes);
     
  }
}

Essa é a forma correta e ideal, claro ninguém sabe o que você deseja fazer, mas, basicamente é isso, exemplo

Documentação

1 curtida

Obrigado pela ajuda!! consigui resolver

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace calculadora
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            DateTime d1 = Convert.ToDateTime(maskedTextBox1.Text);
            DateTime d2 = Convert.ToDateTime(maskedTextBox2.Text);
            TimeSpan d = Convert.ToDateTime(maskedTextBox1.Text) 
                       - Convert.ToDateTime(maskedTextBox2.Text);
            textBox1.Text = d.TotalMinutes.ToString();
1 curtida

Ola!! agora estou tendo outro problema quanto efetuo a subtração no formato de 24 horas esta dando um valor bem diferente tipo, se eu colocar 23:59 - 01:20 me retorna um valor de -1359 ou seja so esta aceitando formato de 12horas alguem pode me da uma luz de como resolver isso?

    private void Btn_Enter_Click(object sender, EventArgs e)
    {
        

        DateTime d1 = Convert.ToDateTime(maskedTextBox2.Text);
        DateTime d2 = Convert.ToDateTime(maskedTextBox1.Text);

        TimeSpan d = Convert.ToDateTime(maskedTextBox1.Text) - Convert.ToDateTime(maskedTextBox2.Text);

        textBox1.Text = d.TotalMinutes.ToString();


    }

qual o valor dessa maskedTextBox2.Text?

Olá não tem valor é inserido aleatório, se é que eu entendi a pergunta.

me fala um valor aleatória que você pode digitar nas duas caixas? na integra!

23:59 - 01:20

Sempre tento nesse horário quando modifico o código para ver se deu certo porem, tento em outros valores : 23:20 - 01:20
00:00 - 02:20

1 curtida

O que está faltando é aspecto Conceitual, onde a diferenças de horas tem que ser levados em consideração a data, ou seja, a diferença entre horas deve também ter a datas, um exemplo claro é 24 horas horas, para ter uma diferenças dessas seria: 01/01/1999 00:00 a 02/01/1999 00:00 isso é horas 24 horas e minutos seria 86400 minutos.

Então você é obrigado a informa uma data, mesmo que isso seja uma característica implícita no seu código:

Exemplo:

Eu pelo duas horas presuponho que isso seja uma virada de data então:

01/01/1999 23:59 - 02/01/1999 01:20

Resultado: 81 minutos.

Codigo:

var s1 = "01/01/1999 23:59";
var s2 = "02/01/1999 01:20";
DateTime t1 = DateTime.ParseExact(s1,"dd/MM/yyyy HH:mm",CultureInfo.InvariantCulture);
DateTime t2 = DateTime.ParseExact(s2,"dd/MM/yyyy HH:mm",CultureInfo.InvariantCulture);

TimeSpan r = t2 - t1;
double minutes = r.TotalMinutes; // total de minutos.

Código Online