如何以毫秒为单位找到日期前后的完整分钟
how to find the full minute before and after a date in miliseconds
我对时间数字有疑问,
假设我这次是:05-03-2016 09:45:55.064371,我有一个将其转换为毫秒的函数(使用 Epoch (reference_date),使用 ctime和 chrono 库)->1457167555064,现在我想要找到的是完整的分钟,在此之前和之后的毫秒数,所以在这种情况下,我想要的是找到 05-03-2016 09:45:00.000000 和 05 -03-2016 09:46:00.000000
我愿意接受另一种方法来确定日期是否在一分钟内。
谢谢!
最方便的工具是 C++17 中的新 std::chrono::floor
和 std::chrono::ceil
。如果您没有 C++17,可以在 Howard Hinnant's free, open-source datetime library:
中预览这些内容
#include "date/date.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std::chrono;
sys_time<milliseconds> tp{1457167555064ms};
sys_time<milliseconds> t0 = floor<minutes>(tp);
sys_time<milliseconds> t1 = ceil<minutes>(tp);
std::cout << t0 << '\n';
std::cout << tp << '\n';
std::cout << t1 << '\n';
}
输出:
2016-03-05 08:45:00.000
2016-03-05 08:45:55.064
2016-03-05 08:46:00.000
这些时间都是 UTC。您的本地时间似乎是 UTC +01:00。在同一个 GitHub 站点上还有一个时区库,您可以使用它在 UTC 和本地时间之间或在任意两个 IANA 时区之间进行转换。
上面,sys_time<milliseconds>
只是time_point<system_clock, milliseconds>
的类型别名。
我对时间数字有疑问,
假设我这次是:05-03-2016 09:45:55.064371,我有一个将其转换为毫秒的函数(使用 Epoch (reference_date),使用 ctime和 chrono 库)->1457167555064,现在我想要找到的是完整的分钟,在此之前和之后的毫秒数,所以在这种情况下,我想要的是找到 05-03-2016 09:45:00.000000 和 05 -03-2016 09:46:00.000000
我愿意接受另一种方法来确定日期是否在一分钟内。
谢谢!
最方便的工具是 C++17 中的新 std::chrono::floor
和 std::chrono::ceil
。如果您没有 C++17,可以在 Howard Hinnant's free, open-source datetime library:
#include "date/date.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std::chrono;
sys_time<milliseconds> tp{1457167555064ms};
sys_time<milliseconds> t0 = floor<minutes>(tp);
sys_time<milliseconds> t1 = ceil<minutes>(tp);
std::cout << t0 << '\n';
std::cout << tp << '\n';
std::cout << t1 << '\n';
}
输出:
2016-03-05 08:45:00.000
2016-03-05 08:45:55.064
2016-03-05 08:46:00.000
这些时间都是 UTC。您的本地时间似乎是 UTC +01:00。在同一个 GitHub 站点上还有一个时区库,您可以使用它在 UTC 和本地时间之间或在任意两个 IANA 时区之间进行转换。
上面,sys_time<milliseconds>
只是time_point<system_clock, milliseconds>
的类型别名。