Arsip: Menghitung Jumlah hari minggu
                
                   more 20 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 20 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 :
kode lengkapnya :
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 20 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 20 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 20 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 20 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 5 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 5 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 13 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 13 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 13 years ago 
Random Topic
- Maaf ya...
by yuan_carlos in OOT more 18 years ago - pengenalan suara / speech recognation
by dinni in Multimedia & Graphic Enhancement more 17 years ago - Apakah prepare bisa mempercepat proses akses database???
by sakuragi in MySQL more 19 years ago - menampilkan detail pada quick report
by yusdi in Reporting more 17 years ago - Ambil beberapa data image dari direktori...... ?
by rebeltwisted in Tip n Trik Pemrograman more 17 years ago - doc stream validate
by xerion in Tip n Trik Pemrograman more 18 years ago - -==DBGRID==-
by frigs in Tip n Trik Pemrograman more 19 years ago - Tanya SQL di Ms.Access??
by gold3n_b0y in Hal umum tentang Pascal Indonesia more 19 years ago - Mengatur Nilai Awal & Akhir Range
by koi1 in Tip n Trik Pemrograman more 15 years ago - Cetak 2 string di satu memo
by RoenZ in Hal umum tentang Pascal Indonesia more 18 years ago