Secara umum, ada beberapa struktur data yang digunakan untuk mendeskripsikan waktu di Delphi, dan pengoperasian waktu pada dasarnya adalah pengoperasian struktur ini.
Jenis TDateTime:
Tipe data yang paling umum digunakan yang mewakili tanggal dan waktu di Delphi adalah tipe TDateTime. Sama seperti bilangan bulat biasa, Anda dapat menentukan variabel tanggal untuk tanggal yang akan dioperasikan dalam program. Tipe TdateTime pada dasarnya adalah tipe angka Double. Tipe TdateTime didefinisikan dalam Delphi seperti ini: tipe TDateTime = tipe Double. Algoritme spesifiknya adalah menggunakan bagian bilangan bulat dari angka Double untuk mewakili tanggal, dengan 30 Desember 1989 sebagai tanggal. titik pangkal. Penjumlahan dan pengurangan hari, misalnya angka 1 melambangkan 1 Januari 1900, dan angka -1 melambangkan 29 Desember 1989. Bagian desimal digunakan untuk menyatakan waktu, dan nilainya adalah rasio waktu yang dinyatakan dengan total waktu sepanjang hari. 15 pagi adalah (6*60+15)/ (24*60)=0,2604166666666666666666666667. Di bawah ini, beberapa contoh diberikan untuk mengilustrasikan interaksi antara tipe TDateTime dan tipe Double.
0 30/12/1899 00:00:00
2.75 1/1/1900 18:00:00
-1.25 29/12/1899 6:00:00
35065 1/1/1996 00:00:00
Saya yakin semua orang dapat memahami metode konversi antara TdateTime dan Double. Oleh karena itu, pengoperasian TDateTime pada dasarnya sama dengan Double.
Jenis TTimeStamp:
Ini adalah tipe struktur yang digunakan untuk mendeskripsikan tanggal dan waktu. Ini didefinisikan dalam Delphi seperti ini:
ketik TTimeStamp = catatan Waktu: Integer; {Jumlah milidetik dari 0:00 tengah malam hingga waktu yang ditentukan} Tanggal: {Jumlah hari dari hari ini hingga tanggal yang ditentukan} akhir;
Dibandingkan dengan TDateTime, ini dapat mengekspresikan waktu presisi tinggi dengan lebih intuitif, dan umumnya digunakan untuk operasi tingkat milidetik dan untuk mengekspresikan waktu yang lebih lama.
Jenis PsystemTime:
Struktur penunjuk yang digunakan untuk operasi waktu di WinApi. Definisinya adalah:
ketik PSystemTime = ^TSystemTime = catatan wYear: Word; wMonth: Word;
Struktur ini banyak digunakan saat memanggil operasi WinApi.
Setelah memahami esensi dari berbagai jenis waktu, saya yakin setiap orang memiliki seperangkat ide untuk memanipulasi jenis waktu ini. Namun, Delphi juga menyediakan serangkaian fungsi proses yang lengkap untuk memanipulasi waktu unit, sekarang saya akan memperkenalkan kepada Anda fungsi-fungsi yang relevan di Delphi:
Fungsi untuk manipulasi waktu
Fungsi tanggal:
Definisi: Tanggal: TDateTime;
Fungsi: Mengembalikan tanggal sekarang
contoh:
Tanggal Saat Ini := Tanggal;
Fungsi Hari Minggu:
Definisi: fungsi DayOfWeek(Tanggal: TDateTime): Integer;
Fungsi: Dapatkan nilai hari dalam seminggu dari tanggal yang ditentukan dan kembalikan 1 hingga 7, mewakili Minggu hingga Sabtu.
Fungsi IncMuth:
Definisi: fungsi IncMonth(const Tanggal: TDateTime; NumberOfMonths: Integer): TDateTime;
Fungsi: Temukan tanggal dari data tanggal tertentu setelah NumberOfMonths bulan.
contoh:
Tanggal1 := IncBulan(tanggal,10);
Jika hari ini adalah 3-5-2002, maka Tanggal1 adalah 3-3-2003
Fungsi IsLeapYear:
Definisi: fungsi IsLeapYear(Tahun: Kata): Boolean;
Fungsi: Menentukan apakah tahun yang ditentukan merupakan tahun kabisat;
contoh:
if isLeapYear(2000)then ShowMessage('Tahun ini adalah tahun kabisat');
Sekarang berfungsi:
Definisi: fungsi Sekarang: TDateTime;
Fungsi: Digunakan untuk mendapatkan tanggal dan waktu saat ini
contoh:
CurrentDateTime := Sekarang;
Prosedur Ganti Tanggal
Definisi: procedure ReplacementDate(var DateTime: TDateTime; const NewDate: TDateTime);
Fungsi: Gunakan bagian tanggal pada parameter Tanggal Baru untuk menggantikan bagian tanggal pada parameter TanggalWaktu, namun jangan mengubah bagian waktu.
Prosedur Ganti Tanggal
Definisi: prosedur GantiWaktu(var DateTime: TDateTime; const NewTime: TDateTime);
Fungsi: Gunakan bagian waktu pada parameter Tanggal Baru untuk menggantikan bagian waktu pada parameter TanggalWaktu, namun jangan mengubah bagian tanggal.
Jika kedua proses di atas digunakan bersama-sama, maka ini setara dengan penugasan.
Fungsi waktu:
Definisi: fungsi Waktu: TDateTime;
Fungsi: Mengembalikan waktu saat ini
contoh:
Waktu Saat Ini := Waktu;
Fungsi konversi antara berbagai jenis waktu
Fungsi DateTimeToFileDate:
Definisi: DateTimeToFileDate(DateTime: TDateTime): Integer;
Fungsi: Mengonversi waktu bertipe TDateTime ke waktu di lingkungan Dos. Metode akses ke waktu di lingkungan Dos berbeda dengan tipe TdateTime di VCL. Saat melakukan operasi file, untuk menjaga konsistensi waktu, Anda perlu menggunakan fungsi DateTimeToFileDate Setelah konversi, nilai Integer yang dikembalikan adalah nilai yang digunakan untuk menjelaskan waktu pada Dos.
Prosedur DateTimeToSystemTime:
Definisi: prosedur DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);
Fungsi: Mengonversi waktu tipe TDateTime ke tipe TSystemTime yang digunakan oleh fungsi Win API, yang digunakan saat menggunakan fungsi WinApi untuk memanipulasi waktu.
Fungsi SystemTimeToDateTime:
Definisi: fungsi SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime;
Fungsi: Mengonversi nomor tipe TSysTemTime yang diperoleh di fungsi WinApi menjadi tipe TDateTime.
Fungsi DateTimeToTimeStamp:
Fungsi TimeStampToDateTime:
Definisi: DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
fungsi TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;
Fungsi: Digunakan untuk mengkonversi antara tipe TDataTime dan TTimeStamp. TDataTime menggunakan tanda ganda untuk mendeskripsikan waktu, sedangkan TTimeStamp menggunakan dua bilangan bulat untuk mendeskripsikan waktu masing-masing. Perbedaan kedua tipe tersebut dapat dilihat pada bagian deskripsi tipe data di awal artikel.
Fungsi EncodeDate:
Definisi: fungsi EncodeDate(Tahun, Bulan, Hari: Kata): TDateTime;
Fungsi: Masukkan nilai tahun, bulan, dan hari, dan kembalikan tanggal sebagai tipe TDateTime. Rentang tahun adalah 1-9999, rentang bulan adalah 1-12, dan rentang tanggal didasarkan pada bulan ini situasinya, jika nilai yang dimasukkan di luar jangkauan, EConvertError akan dihasilkan.
Proses DecodeDate:
Definisi: prosedur DecodeDate(Tanggal: TDateTime; var Tahun, Bulan, Hari: Kata);
Fungsi: Masukkan tanggal bertipe TDateTime dan ubah menjadi nilai tahun, bulan, dan hari. Jika nilai inputnya 0 atau kurang dari 0, maka tahun, bulan dan hari semuanya 0,
Fungsi EncodeTime:
Definisi: EncodeTime(Jam, Menit, Detik, MSec: Word): TDateTime;
Fungsi: Masukkan nilai jam (Jam), menit (menit), detik (Detik), mikrodetik (MSec), dan mengembalikan waktu bertipe TDateTime, yang merupakan desimal antara 0 dan 1. Rentang nilai Hour adalah 0-23, rentang nilai Min adalah 0-59, rentang nilai Detik adalah 0-59, dan rentang nilai MSec adalah 0-999. Jika nilai input melebihi rentang tersebut, an EConvertError dihasilkan.
Proses DecodeTime:
Definisi: prosedur DecodeTime(Waktu: TDateTime; var Jam, Min, Detik, MSec: Word);
Fungsi: Masukkan waktu dan ubah menjadi jam, menit, detik, dan mikrodetik (MSec).
Fungsi konversi tipe TDateTime dan tipe string:
Fungsi DateTimeToStr:
fungsi DateToStr
Fungsi TimeToStr
Definisi: fungsi DateTimeToStr(DateTime: TDateTime): string;
fungsi TimeToStr(Waktu: TDateTime): string;
fungsi TimeToStr(Waktu: TDateTime): string;
Fungsi: Mengonversi nomor tipe TDateTime menjadi string, DateTimeToStr mengonversi tanggal dan waktu, DateToStr hanya mengonversi tanggal, dan TimeToStr hanya mengonversi waktu. Efek keluaran yang dikonversi adalah YYYY-MD H:M:S
Fungsi StrToDateTime
Fungsi StrToDate
Fungsi StrToTime
Definisi: fungsi StrToDateTime(const S: string): TDateTime;
fungsi StrToDate(const S: string): TDateTime;
fungsi StrToTime(const S: string): TDateTime;
Fungsi: Mengubah string dengan format tanggal dan waktu menjadi TDateTime, dimana S harus berupa string yang valid, misalnya
Format YY-MM-DD HH:MM:SS, jika tidak, acara EConvertError akan terpicu dan pesan kesalahan akan muncul.
String bagian waktu harus terdiri dari 2 hingga 3 string numerik, dan dipisahkan oleh karakter pembatas yang diatur dalam pengaturan regional Windows. Persyaratan format harus mematuhi pengaturan dalam pengaturan regional Windows, di mana HH, MM (jam, menit) harus ditambahkan, SS (detik) adalah opsional, Anda juga dapat menambahkan Am dan Pm di akhir untuk membedakan pagi dan sore. Saat ini, sistem akan berpikir bahwa representasi 12 jam digunakan, jika tidak maka akan terjadi dianggap bahwa representasi 24 jam digunakan.
Format bagian tanggal harus sesuai dengan format tanggal pendek di pengaturan regional Windows, yang juga terdiri dari 2 hingga 3 string numerik. Jika hanya ada 2 angka dalam string, maka dianggap bulan dan tanggal ditentukan, dan tahunnya adalah tahun berjalan.
Jika lokal menggunakan representasi tahun dua digit, sistem akan menanganinya sebagai berikut:
Untuk nilai dasar tahun awal tahun berjalan, masukkan tahun 03. Masukkan tahun 50. Masukkan tahun 68.
1998 0 1900 1903 1950 1968
2002 0 2000 2003 2050 2068
1998 50 1948 2003 1950 1968
2000 50 1950 2003 1950 1968
2002 50 1952 2003 2050 1968
2020 50 1970 2003 2050 2068
2020 10 2010 2103 2050 2068
Pertama, dapatkan tahun awal dari tahun dua digit di pengaturan regional. Misalnya, jika rentang tahun dua digit diatur ke 1932-2031 di pengaturan regional, maka tahun awalnya adalah 32 tahun 0, dianggap dua digit. Tahun mewakili abad ini. Jika tahun sebenarnya lebih besar dari 0, nilai tahun berjalan dikurangi tahun awal yang digunakan lebih dari atau sama dengan nilai ini, maka dianggap sebagai abad ini, jika tidak maka dianggap sebagai abad berikutnya.
Prosedur DateTimeToString:
Fungsi FormatDateTime:
Definisi: procedure DateTimeToString(var Hasil: string; const Format: string; DateTime: TDateTime);
fungsi FormatDateTime(const Format: string; DateTime: TDateTime): string;
Fungsi: Dapatkan string waktu yang akan dijadikan keluaran dengan menentukan format pada string Format. Misalnya, jika Anda ingin menampilkan "Hari ini Jumat, 5 Mei 2002", Anda dapat menggunakan kedua metode ini fungsi, tetapi satu String keluaran diperoleh melalui variabel bersama. Nilainya ada di Hasil. Yang lainnya adalah untuk mendapatkan string keluaran melalui nilai kembalian. Parameter DateTime adalah nilai tanggal yang ingin Anda keluarkan Format terdiri dari format bendera dan string tambahan. String tambahan dikelilingi oleh "", sama seperti fungsi Printf di C. Misalnya, nilai Format "Hari ini Jumat, 5 Mei 2002" adalah '" Hari ini "yyyy" tahun "mm" bulan "dd" day ," dddd', yyyy, mm, dd, dddd semuanya merupakan pengidentifikasi format. Penjelasan berbagai pengidentifikasi format adalah sebagai berikut:
d: Gunakan satu atau dua bilangan bulat untuk menampilkan hari (1-31)
dd: Gunakan dua bilangan bulat untuk menampilkan hari, dan gunakan 0 untuk membuat kurang dari dua digit (01-31)
ddd: Menampilkan nomor minggu ini dalam bentuk singkatan. Jika Windows adalah versi bahasa Inggris, maka akan ditampilkan sebagai Senin-Minggu. Jika versi Cina, maka akan ditampilkan sebagai dddd.
dddd: Menampilkan nomor minggu ini dalam format penuh. Jika Windows adalah versi bahasa Inggris, Senin-Jumat akan ditampilkan. Jika versi Cina, Senin-Minggu akan ditampilkan.
ddddd : Output dalam format tanggal pendek di lokal.
dddddd : Output dalam format tanggal panjang di lokal.
m: Gunakan satu atau dua bilangan bulat untuk menampilkan bulan (1-12)
mm: Gunakan dua bilangan bulat untuk menampilkan bulan. Jika kurang dari dua digit, gunakan 0 untuk membuat (01-12)
mmm: Gunakan singkatan untuk menampilkan nama bulan. Versi bahasa Inggris ditampilkan sebagai Jan-Des, dan versi Cina sama dengan mmmm.
mmmm: Gunakan cara lengkap untuk menampilkan nama bulan. Versi bahasa Inggris menampilkan Januari-Desember, dan versi China menampilkan Januari hingga Desember.
yy: Menampilkan tahun sebagai bilangan bulat dua digit (00-99)
yyyy: Menampilkan tahun sebagai bilangan bulat empat digit (0000-9999)
h: Gunakan satu atau dua bilangan bulat untuk menampilkan jam (0-23)
hh: Gunakan dua bilangan bulat untuk menampilkan jam. Jika kurang dari dua digit, gunakan 0 untuk membuat (00-23)
n: Gunakan satu atau dua bilangan bulat untuk menampilkan menit (0-60)
nn: Gunakan dua bilangan bulat untuk menampilkan menit, dan gunakan 0 untuk membuat kurang dari dua digit (00-60)
s: Gunakan satu atau dua bilangan bulat untuk menampilkan detik (0-60)
ss: Gunakan dua bilangan bulat untuk menampilkan detik, dan gunakan 0 untuk membuat kurang dari dua digit (00-60)
z: Menampilkan milidetik dengan satu hingga dua bilangan bulat (0-999)
zzz: Gunakan bilangan bulat tiga digit untuk menampilkan milidetik. Jika kurang dari tiga digit, gunakan 0 untuk membuat (000-999)
tt : menampilkan tanggal dalam format lokal
am/pm: digunakan untuk tampilan 12 jam, dengan AM mewakili pukul 0 hingga 12, dan pm mewakili pukul 12 hingga 0.
Variabel terkait waktu:
Delphi merangkum berbagai informasi tentang pengaturan lokal dan mendefinisikan serangkaian variabel. Berikut beberapa variabel yang berhubungan dengan waktu:
Pemisah Tanggal:Char
Pemisah tanggal, digunakan untuk memisahkan tahun, bulan dan hari
Pemisah Waktu:Char
Pemisah waktu digunakan untuk memisahkan jam, menit, detik
Format Tanggal Pendek: String
Definisi format tanggal pendek di lokal.
Format Tanggal Panjang: String
Definisi format tanggal panjang di lokal.
Format Waktu Pendek: String
Definisi format waktu singkat dalam lokal.
Format Lama: String
Definisi format panjang di lokal.
TimeAMString: String
Sebuah string yang digunakan untuk mewakili pagi hari
TimePMString: String
Sebuah string yang digunakan untuk mewakili sore hari
ShortMonthNames: array[1..12] dari String;
Array yang digunakan untuk menyingkat nama bulan adalah string yang diidentifikasi dengan mmm yang ditampilkan saat menggunakan FormatDateTime.
LongMonthNames: array[1..12] dari String;
Array yang digunakan untuk mewakili nama bulan sepenuhnya adalah string yang diidentifikasi dengan mmmm yang ditampilkan saat menggunakan FormatDateTime.
ShortDayNames: array[1..7] dari String;
Array yang digunakan untuk menyingkat nama hari dalam seminggu adalah string yang diidentifikasi dengan ddd yang ditampilkan saat menggunakan FormatDateTime.
LongDayNames: array[1..7] dari String;
Array yang digunakan untuk sepenuhnya mewakili nama minggu ini adalah string yang diidentifikasi oleh ddd yang ditampilkan saat menggunakan FormatDateTime
TwoDigitYearCenturyWindow:Word = 50;
Tahun awal bila menggunakan tahun dua digit.
Oke, sekarang bagian tentang operasi waktu di Delphi pada dasarnya telah selesai. Pembaca juga dapat memeriksa file bantuan yang sesuai untuk menyelesaikan masalah yang mereka temui sesuai dengan kebutuhan mereka sendiri saat menggunakan pemrograman sebenarnya.