Arsip: Menghitung Jumlah hari minggu

more 19 years ago
grounders
temen2 ada yang tau caranya buat mencari jumlah hari minggu dalam rentang waktu tertentu gak? rentang waktu tersebut qta yang nentuin?
mohon bantuannya ya, thanks....

more 19 years ago
cyber_hecker
gue gak tau. di delphi udah menyediakan fungsi itu atau belon :oops:
tapi dari pada nganggur, maka iseng-iseng gue bikin fungsi sendiri untuk mendapatkan jumlah hari minggu:
fungsi GetSunday :
kode lengkapnya :
function TForm1.GetSunday(var vNow, vThen: TDateTime): Integer;
var nSun : Integer;
begin
if DayOfWeek(vNow) = 1 then
nSun := 1 else nSun := 0;
if (DayOfWeek(vThen) > 1) then
nSun := nSun + 1 else nSun := nSun + 0;
if DayOfWeek(vThen) > DayOfWeek(vNow) then
nSun := WeeksBetween(vNow,vThen) + nSun - 1 else
nSun := WeeksBetween(vNow,vThen) + nSun;
Result := nSun;
end;
sebagai contoh ku buat sebuah aplikasi sederhana untuk menghitung jumlah hari minggu :

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls;
type
TForm1 = class(TForm)
dtpAwal: TDateTimePicker;
dtpSampai: TDateTimePicker;
Label1: TLabel;
Label2: TLabel;
edWeek: TEdit;
btnHitung: TBitBtn;
edHariAwal: TEdit;
edHariSampai: TEdit;
edSelisih: TEdit;
Label3: TLabel;
Label4: TLabel;
edHariMinggu: TEdit;
Label5: TLabel;
procedure btnHitungClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function GetSunday(var vNow, vThen: TDateTime):Integer;
end;
var
Form1: TForm1;
implementation
uses DateUtils;
{$R *.dfm}
function TForm1.GetSunday(var vNow, vThen: TDateTime): Integer;
var nSun : Integer;
begin
if DayOfWeek(vNow) = 1 then
nSun := 1 else nSun := 0;
if (DayOfWeek(vThen) > 1) then
nSun := nSun + 1 else nSun := nSun + 0;
if DayOfWeek(vThen) > DayOfWeek(vNow) then
nSun := WeeksBetween(vNow,vThen) + nSun - 1 else
nSun := WeeksBetween(vNow,vThen) + nSun;
Result := nSun;
end;
procedure TForm1.btnHitungClick(Sender: TObject);
const
sHari : Array[1..7] of String =
('Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu');
var
dNow, dThen : TDateTime;
nWeek,
nDay : Integer;
begin
dNow := dtpAwal.Date;
dThen := dtpSampai.Date;
nDay := DaysBetween(dtpAwal.Date,dtpSampai.Date);
nWeek := WeeksBetween(dNow,dThen);
edHariAwal.Text := Format('%s',[sHari[DayOfWeek(dNow)]]); // nama hari awal
edHariSampai.Text := Format('%s',[sHari[DayOfWeek(dThen)]]); // nama hari akhir
edWeek.Text := Format('%d',[nWeek]); // jumlah week
edSelisih.Text := Format('%d',[nDay]); // selisih hari
edHariMinggu.Text := Format('%d',[GetSunday(dNow,dThen)]); // jumlah hari minggu
end;
end.
nb.
tanggal awal dan tanggal akhir jangan di balik lho. hasilnya pasti salah :D wakakaka
oh ya bagi temen-temen yang lain. di tunggu perbaikan dari listing semrawut ku ini wakakak :D :oops:
more 19 years ago
deLogic
bung hecker.. fungsi getsunday nya masih error..
-jika selisih tanggal tepat kelipatan 7 hari, maka jumlah hari minggu lebih banyak 1., contoh:
--> jika tanggal awal 13 agt dan tanggal akhir 13 agt, maka jumlah hari minggu = 1 ..???
--> jika tanggal awal 13 agt dan tanggal akhir 20 agt, maka jml hr mg = 2..??
- jika tanggal akhir tepat jatuh di hari minggu, maka jumlah hari berkurang 1, contoh:
--> jika tanggal awal 13 agt dan tanggal akhir 21 agt, maka juml hr mg = 1..?
coba solusi ini deh:
function TForm1.GetSunday(vNow, vThen: TDateTime): Integer;
var
nDiffDay : Integer;
nSun : Integer;
dtFirstSunday : tDateTime;
begin
nDiffDay := DayOfWeek(vNow);
dtFirstSunday := vNow - nDiffDay + 1;
if nDiffDay = 1 then
nSun := 1
else
nSun := 0;
Result := WeeksBetween(dtFirstSunday, vThen) + nSun;
end;
NB:
kode diatas juga mengharuskan tanggal akhir lebih besar dari tanggal awal. jadi jangan dibolak balik. Jika Anda ingin fleksibel, misal tanggal akhir lebih kecil dari tanggal awal, maka Anda harus menambahkan rutin pengecekan besar tanggal, bila tanggal akhir lebih kecil maka lakukan pertukaran (swap) tanggal.
more 19 years ago
cyber_hecker
:oops: oh iya...........
wakakak :D sori.. sori.. namanya aja baru belajar. jadi logikanya masih berantakan. wakakak :D
jadi malu neh.
makasih om deLogic. atas perbaikannya.
wakakakakak :D
= asli !! Try And Error neh =

more 19 years ago
grounders
wah thanks banget atas pencerahannya mas de logic
dan juga buat usahanya bung cyber
oh ya, bung cyber tu form kok bisa skinnya asik banget c? kalo boleh tau pake komponen apa? gw boleh minta kagak?

more 19 years ago
cyber_hecker
oh ya, bung cyber tu form kok bisa skinnya asik banget c? kalo boleh tau pake komponen apa? gw boleh minta kagak?gampang.. gampang.. gue cuma pake vclskin biasa kok. udah versi lawas. :P kapan-kapan akan ku upload ke forum ini wakakak :D
weks bung cyber bikin aplikasi apa sih..?? kok aku gak liat ya..???wah kayaknya gue gak bikin aplikasi apa-apa deh.. :P alias pengangguran. hanya suka iseng mbikin aplikasi sesuai yang lagi di tanya. itu pun kalo gue bisa. wakakak :D jadi apanya yang mo di liat :oops: ?
more ...
- Pages:
- 1
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- menghitung string 5 digit
by donlego in Tip n Trik Pemrograman more 17 years ago - Excel Report Group
by yogacute in Tutorial & Community Project more 15 years ago - Mas caranya bikin help di delphi gimana ?
by arjunn_ke in Tutorial & Community Project more 16 years ago - mo tanya
by and_re in Hal umum tentang Pascal Indonesia more 16 years ago - delphi mengguna database pervasive v9
by goodday in Enginering more 19 years ago - Left Join utk transaksi barang
by onsir in MySQL more 15 years ago - edit kosong bs tersimpan
by Ayahe_Hasna in Kritik & Saran more 17 years ago - Program serial komunikasi dengan mikrokontroler
by firdaus_sh in Enginering more 17 years ago - [ask]algoritma untuk program administrasi tempat kursus....
by R960XT in Enginering more 18 years ago - tanya menagani send respon di web service
by trimbil in Tip n Trik Pemrograman more 15 years ago