gpt4 book ai didi

c++ - 转换后年份值错误

转载 作者:行者123 更新时间:2023-11-28 04:26:36 26 4
gpt4 key购买 nike

我正在将格式为 yy/mm/dd 的日期转换为 dd.mm.yyyy。但它返回错误的年份值。

例如:30/12/31 预计为 2030.12.31。但它正在返回 1930.12.31

我不明白为什么要放置 1930 而不是 2030?

/// <summary>Gets a formatted date(gregorian date) as string from a date string with format - yy/mm/dd. </summary>
/// <param name="date">The date in format yy/mm/dd.</param>
/// <returns>The gregorian date in the format dd.mm.yyyy.</returns>
std::wstring GetFormattedDateString(const std::wstring& date)
{
if (date.empty())
return {};
LCID lcid = LocaleNameToLCID(L"en-us", LOCALE_ALLOW_NEUTRAL_NAMES); //parse language tag to get locale ID

DATE dt;
VarDateFromStr(date.c_str(), lcid, 2, &dt);

//get system time struct
SYSTEMTIME st;
::VariantTimeToSystemTime(dt, &st);

return GetDateFromTm(gregorian::to_tm(gregorian::date(st.wYear, st.wMonth, st.wDay)));
}

最佳答案

我想这遵循的逻辑与其他语言类似 - 解析将返回从今天开始在 100 范围内的年份。因此,如果您解析 15/01/01,您将得到 1/1/2015,但当您解析 30/01/01 时,您将得到 1930/01/01。

不过,您确实知道年份的最后两位数字会匹配,因此您只需手动确定世纪即可。在伪代码中

fixed_year = 2000 + year % 100;

在您的情况下,我使用的是 21 世纪(2000 年),并且我将解析后得到的年份除以 100 后的余数相加。所以它的作用是切断世纪并用 21 世纪代替它。

关于c++ - 转换后年份值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54176043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com