keximing250
V2EX  ›  C

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

  •  
  •   keximing250 · Mar 13, 2018 · 4410 views
    This topic created in 3159 days ago, the information mentioned may be changed or developed.

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

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

    16 replies  •  2018-03-14 09:31:26 +08:00
    zyqf
    zyqf
    Mar 13, 2018 via Android
    1
    用时间戳做减法
    keximing250
    keximing250
    OP
    Mar 13, 2018
    2
    @zyqf 不懂,可以具体点么~
    Rufeer
    Rufeer
    Mar 13, 2018 via iPhone
    3
    自己写也就大一 c 语言的难度吧。。 可以换成时间戳 减去两星期 再换回来
    nealwx
    nealwx
    Mar 13, 2018
    4
    1. time 获取当前时间
    2. 两个星期经过的描述数
    3. 用转换 localtime
    4. 再用 strftime 转换一下
    youxiachai
    youxiachai
    Mar 13, 2018
    5
    我很好奇...c++ 没有日期操作库?
    alqaz
    alqaz
    Mar 13, 2018 via Android
    6
    boost ptime
    MeteorCat
    MeteorCat
    Mar 13, 2018 via Android
    8
    获取时间戳,减去两周时间戳,如果是需要获取每周起始点,如星期一就多一步时间筛选操作,楼上给了很多例子了;对 C++来说,我感觉中文资料基本上很贫乏,需要自己去 bing 或者谷歌查询
    keximing250
    keximing250
    OP
    Mar 13, 2018
    9
    @nealwx 懂了~!
    Tyanboot
    Tyanboot
    Mar 13, 2018
    10
    #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
    keximing250
    OP
    Mar 13, 2018
    11
    @Tyanboot 谢鞋了,以后用这个,这古董系统 不敢用 C++11 还是用时间戳了~
    alqaz
    alqaz
    Mar 13, 2018
    12
    boost date 提供了类似的操作
    日期
    using namespace boost::gregorian;
    date d = day_clock::local_day();
    weeks w(-2);
    d -= w;
    这个不需要 c++11
    YMB
    YMB
    Mar 13, 2018
    13
    如果实在不行的话,用其他语言挂个 API 提供服务,这个适合其他设计。
    但是 c++操作时间,可以找下库,c 语言应该有一些类似 pip、composer 之类的管理工具,没有的话应该有类似的网站。
    qf19910623
    qf19910623
    Mar 13, 2018
    14
    @keximing250 无论如何,两个星期的时长是固定的,把当前时间戳减去这个时长,得到的时间戳再格式化一下就可以
    HaoyangWei
    HaoyangWei
    Mar 13, 2018
    15
    记得 nginx 源码中有一段将时间戳转年月日时分秒的算法,比较有趣
    可以把当前时间戳-2*7*86400 丢到这个算法里面拿到日期
    keximing250
    keximing250
    OP
    Mar 14, 2018
    16
    @qf19910623 嗯 就用了这个方法
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2735 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 14:00 · PVG 22:00 · LAX 06:00 · JFK 09:00
    ♥ Do have faith in what you're doing.