Matematis Jam pada Delphi (DateTime Delphi)

Menghitung Jumlah Jam Lembur?

Saya ingin menghitung lama jam kerja lembur bagi pegawai

Hari.1 Pengawai A
– Jam Mulai  : 18.00
– Jam Selesai: 21.30
– Lama Lembur: 3.30 (3 Jam, 30 menit)
Hari.2
– Jam Mulai  : 18.00
– Jam Selesai: 21.30
– Lama Lembur: 3.30 (3 Jam, 30 menit)
Hari.3
– Jam Mulai  : 18.00
– Jam Selesai: 21.30
– Lama Lembur: 3.30 (3 Jam, 30 menit)

Pegawai A melakukan lembur selama 3 hari berturur-turut, totalnya
jadi: 10.30 (10 Kam, 30 Menit).

Bagaimana cara melakukan perhitungan Jam dengan pola seperti ini?

Yang pertama anda perhatikan, adalah menyiapkan rutin pembulatannya
menitnya dulu, biasanya sih lembur ndak perlu dihitung sampe
per-detiknya. Kemudian tinggal buat saja tabel khusus menampung ini,
sederhananya:

CREATE TABLE Attendance(
empid            INTEGER NOT NULL,
workdate         DATE NOT NULL,
timein           TIMESTAMP,
timeout          TIMESTAMP,
ottime           TIMESTAMP,
otvalue          NUMERIC(18,3),
….
primary key(empid, workdate)
);

nah untuk jumlahnya sih ya tinggal menggunakan penjumlahin biasa aja
nantinya, mau pake SUM juga bisa, atau SUM melalui report juga ya ndak
ada masalah serius dengan itu. sementara untuk operasional di sisi
delphinya tinggal pake TDateTime biasa aja.

Kemudian untuk mengkonversi lembur yang dalam tipe TDateTime
(TIMESTAMP), misalnya dari 10:30 jam itu menjadi 10,5 tinggal
menggunakan rutin ini:

{ konversi dari TimeStamp ke value (bilangan real) }
function TimeIntervalValue(const ATimeInterval: TDateTime): TDateTime;
var
Interval: TDateTime;
begin
Interval := HoursPerDay * ATimeInterval;
Result   := (Trunc(Interval) + (Round(Frac(Interval) * 100)/100));
end;

{ konversi dari value (bilangan real), ke timestamp }
function ValueIntervalTime(const AIntervalValue: TDateTime): TDateTime;
begin
Result   := AIntervalValue / HoursPerDay;
end;

Untuk menambah kemudahan operasional, mungkin bisa membuat
fungsi-fungsi baru untuk menghandle total waktu yang > 24 jam dari
contoh fungsi-fungsi default yang ada. fungsi-fungsi itu misalnya:

– EncodeTime
– DecodeTime
– TimeToString
– FormatTime

Kira-kira begitu deh. Good luck. 🙂


Salam,

-Jaimy Azle

http://www.opensubscriber.com/message/delphindo@yahoogroups.com/931917.html

Advertisements

2 thoughts on “Matematis Jam pada Delphi (DateTime Delphi)

  1. Pa’ Rahmadi numpang nanya??
    klo bikin peringatan waktu di delphi gimana yahh??

    ex:
    waktu sisa 1 menit lalu program akan memunculkan message(pesan)peringatan>>
    kurang lebih gitu pa’

    terima kasih.

    BSP :Anda harus buat waktu kontrolnya, jadi jika waktu kontrolnya sudah mau melebihi waktu berjalan (misalnya selisihnya 1 menit), maka anda tampilkan message peringatannya…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s