c++ 如何获取系统时间的前两个星期的时间 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
keximing250
V2EX    C

c++ 如何获取系统时间的前两个星期的时间

  •  
  •   keximing250 2018-03-13 11:34:12 +08:00 3500 次点击
    这是一个创建于 2777 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.感觉挺复杂的啊 ,还要考虑闰年和每个月份的天数不同,

    2.不想写了,烧脑袋,想做个伸手党~大家有现成的例子么~~

    16 条回复    2018-03-14 09:31:26 +08:00
    zyqf
        1
    zyqf  
       2018-03-13 11:38:04 +08:00 via Android
    用时间戳做减法
    keximing250
        2
    keximing250  
    OP
       2018-03-13 11:39:44 +08:00
    @zyqf 不懂,可以具体点么~
    Rufeer
        3
    Rufeer  
       2018-03-13 11:43:55 +08:00 via iPhone
    自己写也就大一 c 语言的难度吧。。 可以换成时间戳 减去两星期 再换回来
    nealwx
        4
    nealwx  
       2018-03-13 11:54:30 +08:00
    1. time 获取当前时间
    2. 两个星期经过的描述数
    3. 用转换 localtime
    4. 再用 strftime 转换一下
    youxiachai
        5
    youxiachai  
       2018-03-13 11:55:22 +08:00
    我很好奇...c++ 没有日期操作库?
    alqaz
        6
    alqaz  
       2018-03-13 11:56:52 +08:00 via Android
    boost ptime
        8
    MeteorCat  
       2018-03-13 12:50:51 +08:00 via Android
    获取时间戳,减去两周时间戳,如果是需要获取每周起始点,如星期一就多一步时间筛选操作,楼上给了很多例子了;对 C++来说,我感觉中文资料基本上很贫乏,需要自己去 bing 或者谷歌查询
    keximing250
        9
    keximing250  
    OP
       2018-03-13 12:57:35 +08:00
    @nealwx 懂了~!
    Tyanboot
        10
    Tyanboot  
    PRO
       2018-03-13 13:24:54 +08:00
    #include <chrono>

    typedef std::chrono::duration<int, std::ratio<3600 * 24 * 7>> weeks;

    int main()
    {
    auto now = std::chrono::system_clock::now();

    auto two_weeks_ago = now - weeks(2);
    // decltype(tt) == time_t
    auto tt = std::chrono::system_clock::to_time_t(two_weeks_ago);
    }

    这样就行了. c++11 提供了方便的 chrono 简化了时间的一些操作.
    keximing250
        11
    keximing250  
    OP
       2018-03-13 13:42:43 +08:00
    @Tyanboot 谢鞋了,以后用这个,这古董系统 不敢用 C++11 还是用时间戳了~
    alqaz
        12
    alqaz  
       2018-03-13 15:42:54 +08:00
    boost date 提供了类似的操作
    日期
    using namespace boost::gregorian;
    date d = day_clock::local_day();
    weeks w(-2);
    d -= w;
    这个不需要 c++11
    YMB
        13
    YMB  
       2018-03-13 17:40:00 +08:00
    如果实在不行的话,用其他语言挂个 API 提供服务,这个适合其他设计。
    但是 c++操作时间,可以找下库,c 语言应该有一些类似 pip、composer 之类的管理工具,没有的话应该有类似的网站。
    qf19910623
        14
    qf19910623  
       2018-03-13 18:52:34 +08:00
    @keximing250 无论如何,两个星期的时长是固定的,把当前时间戳减去这个时长,得到的时间戳再格式化一下就可以
    HaoyangWei
        15
    HaoyangWei  
       2018-03-13 19:01:17 +08:00
    记得 nginx 源码中有一段将时间戳转年月日时分秒的算法,比较有趣
    可以把当前时间戳-2*7*86400 丢到这个算法里面拿到日期
    keximing250
        16
    keximing250  
    OP
       2018-03-14 09:31:26 +08:00
    @qf19910623 嗯 就用了这个方法
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2558 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 11:33 PVG 19:33 LAX 04:33 JFK 07:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86