Sintaksis
int gettimeofday ( struct timeval *tp , struct timezone *tz )Itu gettimeofday() fungsi didefinisikan dalam sys/waktu.h file header.
Argumen
Fungsi ini membutuhkan dua argumen:
1st argumen menunjuk ke waktu struktur. Itu waktu struktur dinyatakan seperti di bawah ini di sys/waktu.h berkas kepala:
struct waktutime_t tv_sec ; //digunakan untuk detik
suseconds_t tv_usec ; //digunakan untuk mikrodetik
Struktur waktu struktur mewakili waktu kalender. Ini memiliki dua anggota:
- tv_sec : Ini adalah jumlah detik sejak zaman.
- tv_usec : Ini adalah mikrodetik tambahan setelah penghitungan jumlah detik sejak zaman…
2dan argumen menunjuk ke zona waktu struktur. Biasanya harus disetel ke NULL karena struktur zona waktu sudah usang. Argumen ini hanya untuk kompatibilitas mundur.
Mengembalikan nilai
Pada kesuksesan, gettimeofday() kembali 0, untuk kegagalan fungsi mengembalikan -1.
Sederhana Dapatkan Waktu dan Cetak
#termasuk#termasuk
int utama()
struct waktu current_time;
gettimeofday(¤t_time, NULL);
printf("detik : %ld\nmikro detik : %ld",
waktu saat ini.tv_sec, saat_waktu.tv_usec);
kembali 0;
Keluaran:
Sini, sys/waktu.h telah disertakan untuk gettimeofday() fungsi dan struktur waktu. Itu gettimeofday() fungsi mengatur waktu dalam anggota struktur timeval (current_time). tv_sec adalah jumlah detik yang telah berlalu sejak awal since zaman UNIX, pada tengah malam UTC pada 1 Januari 1970 dan tv_usec adalah jumlah mikrodetik tambahan yang telah berlalu dari tv_sec. Jika Anda menjalankan program, Anda akan melihat hasilnya. Setiap kali Anda menjalankan program, outputnya akan berubah.
Kesalahan Argumen NULL
#termasuk#termasuk
int utama()
struct waktu current_time;
gettimeofday(NULL, NULL);
kembali 0;
Keluaran:
Dalam contoh ini menunjukkan bahwa argumen pertama dari gettimeofday() fungsi tidak boleh NULL. Peringatan kompilasi akan muncul jika argumen pertama adalah NULL.
Memformat Contoh Waktu Saat Ini
#termasuk#termasuk
#termasuk
int utama()
struct tv waktu;
waktu_tt;
struct tm *info;
penyangga karakter[64];
gettimeofday(&tv, NULL);
t = tv.tv_detik;
info = waktu setempat(&t);
printf("%s",asctime(info));
strftime (buffer, sizeof buffer, "Hari ini adalah %A, %B %d.\n", informasi);
printf("%s", penyangga);
strftime (buffer, sizeof buffer, "Waktunya adalah %I:%M %p.\n", informasi);
printf("%s", penyangga);
kembali 0;
Keluaran:
Dalam contoh ini menunjukkan cara mencetak Tanggal dan Waktu dalam format yang berbeda. Tidaklah mudah untuk merepresentasikan tanggal dari nilai pengembalian gettimeofday() fungsi . Sini, waktu lokal() dan waktu-waktu() fungsi digunakan untuk mewakili dengan baik nilai kembali dari gettimeofday().
Itu waktu lokal() fungsi mengambil argumen, yang merupakan referensi ke pointer dari tv_sec bidang waktu struktur dan mengembalikan referensi ke pointer a struktur tm obyek.
Itu waktu-waktu() fungsi akan menghasilkan string yang diformat dan dipersonalisasi yang menunjukkan tanggal dan waktu dari struktur tm penunjuk. Penentu format digunakan untuk tampilan yang diformat. Misalnya, format string “%d-%m-%Y %H:%M:%S” menentukan tanggal dan waktu dalam formulir ini:
14-04-2020 13:09:42Berikut ini adalah penentu konversi, dapat digunakan untuk tampilan berformat:
penentu | Berarti |
%Sebuah | Singkatan nama hari kerja sesuai dengan lokasi saat ini. |
%SEBUAH | Nama hari kerja sesuai lokasi saat ini. |
%b | Nama bulan disingkat sesuai lokal sekarang. |
%B | Nama bulan penuh sesuai lokal sekarang. |
%c | Representasi tanggal dan waktu yang disukai untuk lokasi saat ini. |
%d | Sebagai angka desimal untuk hari bulan (kisaran 01 - 31). |
%H | Menggunakan 24-jam (rentang 00 - 23) ke jam sebagai angka desimal. |
%SAYA | Menggunakan 12-jam (kisaran 00 - 23) ke jam sebagai angka desimal. |
%j | Sebagai angka desimal untuk hari dalam setahun (kisaran 001-366). |
%m | Sebagai angka desimal untuk bulan tersebut (kisaran 01 - 12). |
%M | Angka desimal menit the. |
%p | Berdasarkan nilai waktu yang ditentukan, baik 'am' atau 'pm' atau string yang setara untuk lokal saat ini. |
%S | Bilangan desimal detik. |
%x | Representasi yang disukai dari tanggal untuk lokal saat ini, tetapi tanpa waktu. |
%X | Representasi waktu yang disukai untuk lokal saat ini, tetapi tanpa tanggal. |
%y | Tahun adalah desimal tetapi tidak ada abad (berkisar dari 00 - 99). |
%Y | Tahunnya desimal termasuk abad. |
%Z | Zona waktu. |
Menggunakan gettimeofday untuk Mengukur Waktu Eksekusi Program
#termasuk#termasuk
int utama()
struct waktu mulai, akhir;
gettimeofday(&mulai, NULL);
untuk (int i = 0; i <1e5 ; i++)
gettimeofday(&end, NULL);
printf("Waktu yang dibutuhkan untuk menghitung sampai 10^5 adalah : %ld mikro detik\n",
((akhir.tv_sec * 1000000 + akhir.tv_usec) -
(Mulailah.tv_sec * 1000000 + mulai.tv_usec)));
kembali 0;
Keluaran:
Contoh ini menunjukkan bahwa bagaimana gettimeofday() fungsi dapat digunakan untuk menghitung waktu eksekusi suatu program.
Kesimpulan
Dengan cara ini, gettimeofday() fungsi mungkin digunakan di Linux. Untuk porting kode yang ada, gettimeofday() fungsi dapat digunakan tetapi dalam kode baru tidak boleh digunakan. jam_gettime() fungsi dapat digunakan sebagai pengganti gettimeofday().