Saat mengembangkan aplikasi, seringkali diperlukan untuk mendapatkan waktu sistem saat ini. Meskipun Y2K sepertinya sudah ketinggalan, kami masih perlu berhati-hati dalam menangani pengaturan waktu dalam aplikasi yang baru kami kembangkan.
Halaman 89 dari "Integrasi - Keterampilan Praktis Delphi 4.0" (selanjutnya disebut sebagai "buku") secara khusus memperkenalkan dua metode untuk memperoleh waktu sistem saat ini, namun kedua metode tersebut memiliki kekurangan atau kesalahan, yang akan dibahas di bawah.
Metode pertama dalam buku ini adalah menggunakan fungsi Time() untuk memperoleh waktu sistem saat ini, dan hasil yang dikembalikan adalah variabel bertipe struktur TDateTime. Misalnya:
Prosedur TForm1.Button2Click(Pengirim: TObject);
var
TanggalWaktu:TDateWaktu;
mulai
TanggalWaktu:=Waktu();
Keterangan:=DateToStr(DateTime)+' '+TimeToStr(DateTime);
akhir;
Tapi tanggal berapapun, hasilnya 30-12-99 xx:xx:xx Yang jelas tanggalnya salah. Dengan menganalisis bantuan Delphi, Time() digunakan untuk mengembalikan "waktu - jam, menit dan detik", yaitu TimeToStr (DateTime), dan tidak boleh digunakan untuk mengembalikan "tanggal". Faktanya, satu-satunya fungsi sistem yang digunakan untuk mengembalikan tanggal adalah Tanggal.
Jadi apa yang bisa mengembalikan "jam, menit, detik" dan "tahun, bulan, hari" yang benar? Anda dapat menggunakan fungsi Sekarang, misalnya:
prosedur TForm1.Button1Click(Pengirim: TObject);
var
waktu saya: TDateTime;
mulai
waktuku:=Sekarang;
Keterangan:=DateToStr(mytime)+' '+TimeToStr(mytime);
//Atau gunakan Caption secara langsung := DateTimeToStr(Now);
akhir;
Format tanggal yang dikembalikan oleh Now hanya memiliki 2 digit untuk tahun tersebut, yaitu tahun 2000 ditampilkan sebagai 00, yang tampaknya tidak memuaskan. Selain itu, Now dan Time hanya dapat memperoleh waktu yang akurat hingga beberapa detik waktu tingkat milidetik yang akurat, Anda dapat menggunakan fungsi API GetSystemTime, dan tipe TSystemTime yang sesuai didefinisikan sebagai:
TSystemTime = catatan
wTahun: Kata;
wBulan: Kata;
wDayOfWeek: Kata;
hari hari: Kata;
siapaJam: Kata;
wMenit: Kata;
wKedua: Kata;
wMilidetik: Kata;
akhir;
Jelasnya, strukturnya juga dapat dengan mudah digunakan dalam logika program untuk membentuk berbagai nilai waktu, sehingga penggunaan fungsi GetSystemTime memiliki keuntungan besar. Namun, penggunaan fungsi ini dalam buku ini salah. Dengan melihat bantuan Windows SDK, kita dapat melihat bahwa prototipe fungsi ini adalah:
VOID GetSystemTime(LPSYSTEMTIME lpst), penunjuk parameter lpst mendapatkan waktu sistem, sehingga dapat diimplementasikan sebagai segmen program berikut:
prosedur TForm1.Button3Click(Pengirim: TObject);
var
Waktu Sistem: Waktu Sistem;
mulai
DapatkanSystemTime(SysTime);
Keterangan:=IntToStr(SysTime.wYear)+' '+IntToStr(SysTime.wMonth);
//jika SysTime.wYear>2000 maka
//...Gunakan berbagai nilai waktu yang diperoleh dalam logika program
akhir;
Berdasarkan pembahasan di atas, akan lebih mudah dan fleksibel untuk mendapatkan waktu sistem saat ini menggunakan fungsi GetSystemTime.