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
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();
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?
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.