用C ++获得当前年份的更优雅的方法

问题描述 投票:0回答:2

我对C ++很陌生。我需要获取当前年份并将其存储在一个整数中。

我已经解决了这个问题:

std::time_t result = std::time(nullptr);
std::istringstream iss(ctime(&result));

iss.ignore(20);
int year;
iss >> year;

即使找到可行的解决方案,我也觉得它有点难看,因为它似乎不是很健壮,并且需要很多步骤来解决很多问题。

会有更好的方法吗?

c++ time stream c++-standard-library
2个回答
1
投票

C ++ 20,您可以将std::chrono用于此目的。

P0355R7 Extending to Calendars and Time Zones


1
投票

time_t转换为字符串,然后进行字符串解析,这对我来说似乎是不必要的复杂且容易出错。如@Ted's comment中已抱怨的那样,这可能会引入文本输出的本地化,这可能会使解析变得不那么健壮。

std::time()一起可用

  • std::time()

    将自纪元起的给定时间作为std :: time_t值转换为日历时间,以本地时间表示。

  • std::localtime()

    将自纪元以来的给定时间转换为std :: time_t值,转换为日历时间,以协调世界时(UTC)表示。

都返回一个指向std::localtime()的指针,该指针除其他外还包含一个公共成员

std::gmtime()年,自1900年以来>

小样本:

std::gmtime()

输出:

struct tm

struct tm

© www.soinside.com 2019 - 2024. All rights reserved.