C++中上周一的时间戳
timestamp of last Monday in C++
我需要使用C++获取我本地时区上周一开始 (00:00( 的时间戳 (time_t(。有没有简单的方法可以只使用标准C++而不使用第三方库?
为什么没有第三方库?使用Howard Hinnant的仅标题日期库要容易得多,该库应该在未来的标准中可用:
#include "date.h"
#include <iostream>
int main()
{
using namespace date;
using namespace std::chrono;
//auto now = sys_days(2018_y/August/12);
auto now = floor<days>(system_clock::now());
date::weekday day = weekday{ now };
now -= day - Monday;
std::cout << year_month_day(now) << "n";
time_t time = now.time_since_epoch().count();
std::cout << time << "n";
}
这是我自己对这项任务的快速解决方案,我认为它可以改进以与一周中的任何一天一起工作......
time_t get_monday_timestamp(time_t time)
{
tm* timeinfo = localtime(&time);
int wday=timeinfo->tm_wday;
int hour=timeinfo->tm_hour;
int min=timeinfo->tm_min;
int sec=timeinfo->tm_sec;
time_t SECONDS_IN_DAY = 60 * 60 * 24;
//monday should be 0 and sunday 6
wday--;
if(wday == -1)
{
wday = 6;
}
time -= wday * SECONDS_IN_DAY;
time -= (sec + 60 * min + 60 * 60 * hour);
return time;
}
相关文章:
- C++:floor unix时间戳到UTC月份
- 如何在c++中录制具有精确帧时间戳的视频
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- 在多个时间戳处执行函数
- 以天C++为单位的两个时间戳之间的差异
- 获取 QInputEvent 在 Qt 4.8 中被放入 QEventLoop 队列时的时间戳
- 在 C++ 中为文件名添加时间戳
- 如何从远程 SFTP 服务器获取 HH-MM-SS 时间戳格式的文件列表
- 如何将消息时间戳写入日志文件?
- 将时间戳打印到流的最简单方法
- 读取悖论时间戳字段
- C++程序中多个位置的时间 (0) 时间戳
- 在 c++ 中获取 X 毫秒前的时间戳
- 将 unix 时间戳转换为人类可读的日期
- Microsoft NTLM (v2) 中的时间戳使用
- C++中上周一的时间戳
- C++-需要读取存储在文件(.txt)中的时间戳并正确检索
- 使用 C++将时间戳转换为格式化的日期时间
- 如何将 time-uuid(存储在 boost uuid 中)转换为时间戳/自纪元以来的时间?