Titik Waktu
Representasikan momen waktu
Titik Waktu adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Apa Itu Titik Waktu?
std::chrono::time_point merepresentasikan momen tertentu yang diukur dari titik acuan sebuah jam. Objek ini memasangkan sebuah jam dengan durasi sejak titik acuan tersebut.
- Dikembalikan oleh
clock::now(). - Mengurangkan dua titik waktu menghasilkan durasi.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
time_point<steady_clock> tp = steady_clock::now();
std::cout << "Captured a moment: " << (tp.time_since_epoch().count() != 0) << '\n';
return 0;
}time_since_epoch
Setiap titik waktu dapat melaporkan jaraknya dari titik acuan jam dengan time_since_epoch(), yang mengembalikan durasi.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto tp = system_clock::now();
auto d = tp.time_since_epoch();
auto s = duration_cast<seconds>(d);
std::cout << "Positive epoch seconds: " << (s.count() > 0) << '\n';
return 0;
}Mengurangkan Titik Waktu
Mengurangkan satu titik waktu dari titik waktu lainnya menghasilkan durasi, yaitu waktu yang telah berlalu antara kedua momen tersebut.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto a = steady_clock::now();
auto b = steady_clock::now();
auto diff = b - a;
std::cout << "Elapsed ns is non-negative: " << (diff.count() >= 0) << '\n';
return 0;
}Menambahkan Durasi
Menambahkan durasi ke titik waktu menghasilkan titik waktu baru di masa depan atau di masa lalu jika dilakukan pengurangan. Inilah cara Anda menghitung tenggat waktu.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
using namespace std::chrono_literals;
auto now = steady_clock::now();
auto deadline = now + 10s;
std::cout << "Deadline is after now: " << std::boolalpha << (deadline > now) << '\n';
return 0;
}Membandingkan Titik Waktu
Titik waktu dari jam yang sama mendukung semua operator perbandingan, sehingga Anda dapat memeriksa apakah suatu momen terjadi sebelum atau sesudah momen lainnya.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto first = steady_clock::now();
auto second = steady_clock::now();
std::cout << std::boolalpha << (first <= second) << '\n';
return 0;
}Titik Waktu Khusus Jam
Titik waktu terikat pada tipe jamnya. Anda tidak dapat membandingkan langsung titik waktu system_clock dengan titik waktu steady_clock karena titik acuan keduanya berbeda.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
system_clock::time_point sys = system_clock::now();
steady_clock::time_point mono = steady_clock::now();
std::cout << "Both captured: " << ((sys.time_since_epoch().count() != 0) && (mono.time_since_epoch().count() != 0)) << '\n';
return 0;
}Mengonversi ke time_t
system_clock::to_time_t mengubah titik waktu kalender menjadi time_t bergaya C yang dapat Anda format untuk ditampilkan kepada manusia.
#include <iostream>
#include <chrono>
#include <ctime>
int main() {
using namespace std::chrono;
auto tp = system_clock::now();
std::time_t t = system_clock::to_time_t(tp);
std::cout << "time_t is positive: " << (t > 0) << '\n';
return 0;
}from_time_t
Kebalikannya, system_clock::from_time_t membuat titik waktu dari nilai time_t, seperti cap waktu yang tersimpan.
#include <iostream>
#include <chrono>
#include <ctime>
int main() {
using namespace std::chrono;
std::time_t t = 1000000000;
auto tp = system_clock::from_time_t(t);
auto back = system_clock::to_time_t(tp);
std::cout << "Round trip ok: " << std::boolalpha << (back == t) << '\n';
return 0;
}Menghitung Tenggat Waktu
Pola umum: ambil now(), tambahkan durasi batas waktu, lalu bandingkan dengan now() terbaru untuk mengetahui apakah tenggat waktu telah terlewati.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
using namespace std::chrono_literals;
auto deadline = steady_clock::now() + 0ms;
auto current = steady_clock::now();
bool expired = current >= deadline;
std::cout << "Expired: " << std::boolalpha << expired << '\n';
return 0;
}Presisi Titik Waktu
Presisi titik waktu sesuai dengan tipe durasi jamnya. Anda dapat mengonversi titik waktu ke satuan yang lebih besar menggunakan time_point_cast.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto tp = system_clock::now();
auto secs_tp = time_point_cast<seconds>(tp);
std::cout << "Cast preserved sign: " << (secs_tp.time_since_epoch().count() > 0) << '\n';
return 0;
}Menyimpan Cap Waktu
Untuk menyimpan suatu momen, konversikan momen tersebut menjadi jumlah detik sejak titik acuan, simpan bilangan bulatnya, lalu bangun kembali titik waktu itu ketika diperlukan.
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
auto tp = system_clock::now();
long long stored = duration_cast<seconds>(tp.time_since_epoch()).count();
std::cout << "Stored value usable: " << (stored > 0) << '\n';
return 0;
}Pemeriksaan Singkat
Uji pemahaman Anda tentang aritmetika titik waktu.
Ringkasan
Anda telah mempelajari bahwa time_point:
- menandai momen tertentu relatif terhadap titik acuan jam
- melaporkan ofsetnya melalui
time_since_epoch() - mendukung penambahan, pengurangan durasi, dan perbandingan
- dapat dikonversi ke dan dari
time_tuntuk ditampilkan dan disimpan
Selanjutnya, Anda akan menggunakan alat-alat ini untuk melakukan tolok ukur dan mengukur kinerja kode.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Titik Waktu” gratis?
Ya — teks lengkap “Titik Waktu” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Titik Waktu”?
Representasikan momen waktu Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Titik Waktu” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.