• SDN Forum üyelikleri çok yakında yeniden açılıyor. Siz de bu büyük topluluğun bir parçası olmak için bizi takipte kalın, gelişmeleri kaçırmayın!

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

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
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
 

Deleted-Name

Profesör
Katılım
24 Mayıs 2013
Mesajlar
2,602
Reaksiyon puanı
18
Puanları
218
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
Katılım
20 Haziran 2011
Mesajlar
101
Reaksiyon puanı
0
Puanları
0
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
}
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
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
}

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

cosmosfb

Asistan
Katılım
20 Haziran 2011
Mesajlar
101
Reaksiyon puanı
0
Puanları
0
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
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
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
Katılım
20 Haziran 2011
Mesajlar
101
Reaksiyon puanı
0
Puanları
0
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.
 
Üst