VB.NET Mesaai Süresini nasıl hesaplarım?

Vatansever

Asistan
Hazırladığım projede saat ve dakika olarak iki değer giriliyor eğer bu değerler arasındaki süre 8 saatten fazlayla kaç dakika fazla bunu elde etmek istiyorum internetten bir kod buldum işimi görücek gibi bir iki kusuru var mesela 20:00 07:00 değerleri girildiğinde -13:00 değeri gösteriyor yani akşam 20:00 'de işe gidip sabah 07:00'de işten çıktığımda 3 saat mesai yapmış olurum ama kod -13:00 diyor bilmem anlatabildimmi

Kod:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim startDate As Date = Convert.ToDateTime(TextBox1.Text)
        Dim endDate As Date = Convert.ToDateTime(TextBox2.Text)
        Dim diff As TimeSpan = endDate.Subtract(startDate)
        TextBox3.Text = diff.Hours.ToString() + ":" + diff.Minutes.ToString()
    End Sub



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.Text = Date.Now.ToString()
        TextBox2.Text = Date.Now.AddHours(0).AddMinutes(-30).AddSeconds(-20).ToString()
    End Sub
 

Shit Happens

Profesör
Hazırladığım projede saat ve dakika olarak iki değer giriliyor eğer bu değerler arasındaki süre 8 saatten fazlayla kaç dakika fazla bunu elde etmek istiyorum internetten bir kod buldum işimi görücek gibi bir iki kusuru var mesela 20:00 07:00 değerleri girildiğinde -13:00 değeri gösteriyor yani akşam 20:00 'de işe gidip sabah 07:00'de işten çıktığımda 3 saat mesai yapmış olurum ama kod -13:00 diyor bilmem anlatabildimmi

Kod:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim startDate As Date = Convert.ToDateTime(TextBox1.Text)
        Dim endDate As Date = Convert.ToDateTime(TextBox2.Text)
        Dim diff As TimeSpan = endDate.Subtract(startDate)
        TextBox3.Text = diff.Hours.ToString() + ":" + diff.Minutes.ToString()
    End Sub



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.Text = Date.Now.ToString()
        TextBox2.Text = Date.Now.AddHours(0).AddMinutes(-30).AddSeconds(-20).ToString()
    End Sub
Mutlak değerini al
 

cosmosfb

Asistan
Algoritma şu şekilde olmalı:
int difTime = 0;
if ( time1 > time2 ) {
difTime = ( 24:00 - time1 ) + time2
}
else {
difTime = time1 - time2
}
if ( difTime >= 8:00 ) {
difTime = difTime - 8:00
}
 

cosmosfb

Asistan
Biraz daha açıklayabilirmisin kodu az çok anladım ama yeterli gelmedi vb.net olmayınca :(

int difTime = 0;
// difTime, 2 saat değişkeni arasındaki zaman farkını ifade ediyor
if ( time1 > time2 ) {
// 1. zaman değişkeni saat cinsinden 2. zaman değişkeninden büyük ise örnek: 22:00 > 15:00
// Bu şu anlama geliyor: kişi başladığı işi bir sonraki gün bitiriyor
// Bu nedenle önce 24:00 - time1 yapıyor ve ilk gün kaç saat çalıştığını buluyoruz
// Daha sonra 2. gün çalıştığı saat sayısını 1. gün çalıştığı saat sayısına ekliyoruz ve difTime değişkenine // atıyoruz
difTime = ( 24:00 - time1 ) + time2
}
else {
// Else ifadesine girebilmesi için time2 > time1 olmalı örnek: 10:00 < 22:00 gibi
// Bu ifade, kişinin işi aynı gün bitirdiği anlamına gelir
// time değişkenleri arasındaki farkı buluyor ve difTime değişkenine atıyoruz
difTime = time1 - time2
}

// Eğer kişinin çalıştığı toplam saat sayısı 8 saatten fazla ise
// Çalıştığı saat sayısından 8:00 (8 saat) çıkarıyoruz.
// Bu if bloğuna girebilmesi için kişinin 8 saatten fazla çalışmış olması gerekmekte
if ( difTime >= 8:00 ) {
difTime = difTime - 8:00
}
 

Vatansever

Asistan
int difTime = 0;
// difTime, 2 saat değişkeni arasındaki zaman farkını ifade ediyor
if ( time1 > time2 ) {
// 1. zaman değişkeni saat cinsinden 2. zaman değişkeninden büyük ise örnek: 22:00 > 15:00
// Bu şu anlama geliyor: kişi başladığı işi bir sonraki gün bitiriyor
// Bu nedenle önce 24:00 - time1 yapıyor ve ilk gün kaç saat çalıştığını buluyoruz
// Daha sonra 2. gün çalıştığı saat sayısını 1. gün çalıştığı saat sayısına ekliyoruz ve difTime değişkenine // atıyoruz
difTime = ( 24:00 - time1 ) + time2
}
else {
// Else ifadesine girebilmesi için time2 > time1 olmalı örnek: 10:00 < 22:00 gibi
// Bu ifade, kişinin işi aynı gün bitirdiği anlamına gelir
// time değişkenleri arasındaki farkı buluyor ve difTime değişkenine atıyoruz
difTime = time1 - time2
}

// Eğer kişinin çalıştığı toplam saat sayısı 8 saatten fazla ise
// Çalıştığı saat sayısından 8:00 (8 saat) çıkarıyoruz.
// Bu if bloğuna girebilmesi için kişinin 8 saatten fazla çalışmış olması gerekmekte
if ( difTime >= 8:00 ) {
difTime = difTime - 8:00
}


Mantığı anladım ama koda dökemedim bugüne kadar hiç zaman kodlarıyla uğraşmamıştım aşağıdaki gibi birşeyler uydurdum olmadı kodlar hatalı saatleri birbirinden nasıl çıkartıp toplıycam nasıl karşılaştırıcam anlayamadım :(
Kod:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim startDate As Date = Convert.ToDateTime(TextBox1.Text)
        Dim endDate As Date = Convert.ToDateTime(TextBox2.Text)
        Dim finalsaat As Date = Convert.ToDateTime("24:00")
        Dim çalışmassati As Date = Convert.ToDateTime("8:00")
        Dim diff As TimeSpan = endDate.Subtract(çalışmassati - startDate)

        If startDate > endDate Then
            diff = (finalsaat - startDate) + endDate
        Else

            diff = startDate - endDate
        End If

        If diff.Hours.ToString() + ":" + diff.Minutes.ToString() >= çalışmassati Then
            diff = diff - çalışmassati
        End If

        TextBox3.Text = diff.Hours.ToString() + ":" + diff.Minutes.ToString()

    End Sub
 

cosmosfb

Asistan
Mantığı anladım ama koda dökemedim bugüne kadar hiç zaman kodlarıyla uğraşmamıştım aşağıdaki gibi birşeyler uydurdum olmadı kodlar hatalı saatleri birbirinden nasıl çıkartıp toplıycam nasıl karşılaştırıcam anlayamadım :(
Kod:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim startDate As Date = Convert.ToDateTime(TextBox1.Text)
        Dim endDate As Date = Convert.ToDateTime(TextBox2.Text)
        Dim finalsaat As Date = Convert.ToDateTime("24:00")
        Dim çalışmassati As Date = Convert.ToDateTime("8:00")
        Dim diff As TimeSpan = endDate.Subtract(çalışmassati - startDate)

        If startDate > endDate Then
            diff = (finalsaat - startDate) + endDate
        Else

            diff = startDate - endDate
        End If

        If diff.Hours.ToString() + ":" + diff.Minutes.ToString() >= çalışmassati Then
            diff = diff - çalışmassati
        End If

        TextBox3.Text = diff.Hours.ToString() + ":" + diff.Minutes.ToString()

    End Sub

VB syntax adına hiçbir şey bilmiyorum. Ben sadece dile getirdiğin sorunu çözme adına algoritmayı yazdım.
Java, C# konularında yardımcı olabileceğim bir sorun varsa daha fazla yardım edebilirim.
 

Son mesajlar

Üst