标题:C++如何将日期运算之后格式化为日期字符串
只看楼主
md00000000
Rank: 4
等 级:业余侠客
威 望:7
帖 子:105
专家分:289
注 册:2017-6-22
结帖率:44.44%
已结贴  问题点数:50 回复次数:2 
C++如何将日期运算之后格式化为日期字符串
如题,比如给一个时间增加多少秒后转化为 日期-时间 的格式

标准库里有嘛?

还是得自己写?
搜索更多相关主题的帖子: 运算 字符串 日期 C++ 格式化 
2022-11-26 21:16
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:50 
C语言就有,struct tm,localtime 等等
建议你用C语言的这些标准函数,简单

C++的函数别看写得简单,其实内容绕弯弯挺复杂的
程序代码:
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
//using namespace std::chrono_literals;

int main( void )
{
    year_month_day a { year(2022), month(11), day(27) };
    cout << a << endl;

    auto b = local_days(a) + hours(25) + minutes(12) + seconds(31);
    cout << b << endl;
}

输出
2022-11-27
2022-11-28 01:12:31
2022-11-27 13:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
纯C的做法:

程序代码:
#include <time.h> 
#include <stdio.h>

time_t TimeFromLocal( int year, int mon, int day, int hour, int min, int sec )
{
    struct tm t;
    t.tm_year = year-1900;
    t.tm_mon = mon-1;
    t.tm_mday = day;
    t.tm_hour = hour;
    t.tm_min = min;
    t.tm_sec = sec;
    return mktime(&t);
}

void PrintTm( const struct tm* ptm )
{
    printf( "%04d年%02d月%02d日 %02d时%02d分%02d秒 "
        , ptm->tm_year+1900, ptm->tm_mon+1, ptm->tm_mday
        , ptm->tm_hour, ptm->tm_min, ptm->tm_sec );
    printf( "(本年第%d天,星期%d)\n"
        , ptm->tm_yday+1, ptm->tm_wday );
}

int main( void ) 
{ 
    time_t t = TimeFromLocal( 2000, 2, 3, 4, 5, 6 );
    PrintTm( localtime(&t) );

    t += 100000; // 增加 100000秒 即 1天3小时46分钟40秒
    PrintTm( localtime(&t) );

    return 0;
}
2022-11-28 09:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510791-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 2.036982 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved