[C/C++]-创新互联
场景
当前标题:[C/C++]-创新互联
标题链接:http://ybzwz.com/article/dhogdh.html
C/C++
的新版日期类型并不能获取日期的具体数值。C++20
的std::chrono::month_day_last
可以获取某月的最后一天,但是返回的类型是month_day_last
类型,这个类型无法获取天数,只能获取月份。 所以C/C++
如何获取某年月份的最后一天?
在隆安等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都做网站 网站设计制作定制网站,公司网站建设,企业网站建设,品牌网站设计,成都全网营销推广,成都外贸网站建设,隆安网站建设费用合理。C++20
之前,获取年月日的数值还是得借助
库,通过转换为time_t
类型之后再转换为struct tm
类型获取数值,功能比较弱。所以这里只需要C
库的
即可实现。实际上月份的最后一天可能是
28,29,30,31
,它是与年份有关的,所以决定它的日期还是得通过获取系统计算出来的实际值。方法就是通过获取下一个月份的1
号的日期,之后再减去固定的每日24
小时即可获取前一天的日期,也就是当前月的最后一天。我们知道
time_t
的时间单位是秒,而一天总共有60*60*24 = 86400
秒。
std::pairMonthRange(time_t t)
{auto now = localtime(&t);
now->tm_mon++;
now->tm_mon %= 12;
now->tm_mday = 1;
auto next = mktime(now);
auto prev = next - 86400;
auto last = localtime(&prev);
char lastDay[16] = {0};
sprintf(lastDay,"%.4d-%.2d-%.2d",last->tm_year+1900,last->tm_mon+1,last->tm_mday);
char firstDay[16] = {0};
sprintf(firstDay,"%.4d-%.2d-%.2d",last->tm_year+1900,last->tm_mon+1,1);
return std::make_pair(firstDay,lastDay);
}
调用auto f1 = MonthRange(time(NULL));
cout<< f1.first.c_str()<< "=>"<< f1.second.c_str()<< endl;
输出2021-12-01=>2021-12-31
参考Date and time utilities - cppreference.com
time_t - cppreference.com
tm - cppreference.com
Date and time utilities - cppreference.com
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前标题:[C/C++]-创新互联
标题链接:http://ybzwz.com/article/dhogdh.html