如何在C++中仅获取系统当前小时数
通用实现思路
- 首先调用你已有的接口获取完整的系统时间对象(优先用原生时间类/结构体,不要直接处理字符串格式的时间)
- 调用对应语言/平台提供的时间对象属性/方法,直接提取24小时制的小时数值,返回值范围为0~23
- 自定义昼夜判断规则即可,常规参考规则可设为6点到18点判定为白天,其余时间判定为夜晚,可根据实际需求调整阈值
常见语言实现示例
Python
from datetime import datetime current_hour = datetime.now().hour # 昼夜判断示例 is_daytime = 6 <= current_hour < 18
不需要手动拆分datetime.now()返回的完整时间内容,直接取hour属性即可。
JavaScript(浏览器/Node.js)
const currentHour = new Date().getHours() const isDaytime = currentHour >= 6 && currentHour < 18
getHours()方法直接返回24小时制的小时数。
Java
import java.time.LocalTime; int currentHour = LocalTime.now().getHour(); boolean isDaytime = currentHour >= 6 && currentHour < 18;
Java 8+ 可以直接用LocalTime类只获取时间部分,也可以从完整的LocalDateTime对象中调用getHour()方法提取小时。
C#
int currentHour = DateTime.Now.Hour; bool isDaytime = currentHour >= 6 && currentHour < 18;
直接从DateTime结构体的Hour属性获取小时值。
注意事项
- 注意区分12小时制和24小时制的返回值:部分API如果返回12小时制的小时数,需要同时获取上午/下午标记(AM/PM)换算成24小时制再做判断,避免中午12点、凌晨12点的判断错误
- 如果有跨时区需求,优先指定时区获取时间,避免用系统默认时区导致的判断偏差
- 如果拿到的只有时间字符串,可以用对应语言的时间解析方法先把字符串转成时间对象,再提取小时,不要手动截取字符串,避免不同格式的时间字符串适配问题
内容的提问来源于stack exchange,提问作者agbagbgb
相关产品推荐
相关产品推荐

