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

2018-03-13 11:34:12 +08:00
 keximing250

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

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

2822 次点击
所在节点    C
16 条回复
zyqf
2018-03-13 11:38:04 +08:00
用时间戳做减法
keximing250
2018-03-13 11:39:44 +08:00
@zyqf 不懂,可以具体点么~
Rufeer
2018-03-13 11:43:55 +08:00
自己写也就大一 c 语言的难度吧。。 可以换成时间戳 减去两星期 再换回来
nealwx
2018-03-13 11:54:30 +08:00
1. time 获取当前时间
2. 两个星期经过的描述数
3. 用转换 localtime
4. 再用 strftime 转换一下
youxiachai
2018-03-13 11:55:22 +08:00
我很好奇...c++ 没有日期操作库?
alqaz
2018-03-13 11:56:52 +08:00
boost ptime
shakespark
2018-03-13 12:24:07 +08:00
MeteorCat
2018-03-13 12:50:51 +08:00
获取时间戳,减去两周时间戳,如果是需要获取每周起始点,如星期一就多一步时间筛选操作,楼上给了很多例子了;对 C++来说,我感觉中文资料基本上很贫乏,需要自己去 bing 或者谷歌查询
keximing250
2018-03-13 12:57:35 +08:00
@nealwx 懂了~!
Tyanboot
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
2018-03-13 13:42:43 +08:00
@Tyanboot 谢鞋了,以后用这个,这古董系统 不敢用 C++11 还是用时间戳了~
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
2018-03-13 17:40:00 +08:00
如果实在不行的话,用其他语言挂个 API 提供服务,这个适合其他设计。
但是 c++操作时间,可以找下库,c 语言应该有一些类似 pip、composer 之类的管理工具,没有的话应该有类似的网站。
qf19910623
2018-03-13 18:52:34 +08:00
@keximing250 无论如何,两个星期的时长是固定的,把当前时间戳减去这个时长,得到的时间戳再格式化一下就可以
HaoyangWei
2018-03-13 19:01:17 +08:00
记得 nginx 源码中有一段将时间戳转年月日时分秒的算法,比较有趣
可以把当前时间戳-2*7*86400 丢到这个算法里面拿到日期
keximing250
2018-03-14 09:31:26 +08:00
@qf19910623 嗯 就用了这个方法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/437538

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX