Tôi muốn kiểm tra xem thời gian hiện tại (bằng C++) có nằm trong phạm vi thời gian không.
Tôi muốn tạo một phạm vi thời gian từ một bộ dữ liệu ("12:00", "17:30") tức là (chuỗi, chuỗi) và kiểm tra xem thời gian bây giờ() có nằm giữa hai thời gian hay không.
Có cách nào tốt không? Tôi không muốn kiểm tra ngày, tức là tôi không quan tâm đó là thứ Hai hay tháng Mười. Tất cả những gì tôi quan tâm là thời gian.
Nếu bạn có thể ép buộc các chuỗi trong bộ dữ liệu thànhHH:MM
, bạn có thể sử dụng một so sánh chuỗi đơn giản(Một).
Chương trình hoàn chỉnh bên dưới cho biết cách lấy thời gian hiện tại dưới dạng chuỗi:
#include
#include
std::string getNowHhMm() {
time_t bây giờ = thời gian(0);
struct tm *local = localtime(&now);
char buff[sizeof("hh:mm")];
strftime(buff, sizeof(buff), "%H:%M", local);
trả lại buff;
}
int chính() {
std::cout << getNowHhMm() << std::endl;
}
Khi sử dụng hàm này, bạn cũng có thể cung cấp một hàm để xem liệu nó có nằm trong phạm vi nhất định hay không:
bool isBetween(
const std::string &now,
const std::string &lo,
const std::string &hi
) {
return (bây giờ >= lo) && (bây giờ <= xin chào);
}
và gọi nó là:
if (isBetween(getNowHhMm(), thời gian thấp nhất, thời gian cao nhất))
std::cout << "Nó nằm trong phạm vi.\n';
Và để đạt hiệu quả, nếu bạn đang kiểm tra nhiều phạm vi, hãy nhớ lưu trữ getNowHhMm()
Giá trị trả về:
std::string bây giờ = getNowHhMm();
if (isBetween(bây giờ, "00:00", "05:59"))
std::cout << "Còn quá sớm để dậy.\n";
khác nếu (isBetween(bây giờ, "06:00", "07:59"))
std::cout << "Đã đến lúc trỗi dậy.\n";
khác nếu (isBetween(bây giờ, "08:00", "11:59"))
std::cout << "Ra khỏi giường đi, đồ lười biếng.\n";
khác
std::cout << "Ngủ đi, chắc bạn đã bị sa thải rồi.\n";
(Một) Vâng, đây là việc phát minh lại bánh xe, nhưng với sự đơn giản của bánh xe này, tôi nghĩ đó là một giải pháp tốt.
Tôi là một lập trình viên xuất sắc, rất giỏi!