此时钟可以表示文件系统中使用的文件时间值的范围和分辨率。
语法
using file_clock = std::filesystem::_File_time_clock; // C++20
备注
在 Microsoft 实现中,时期,即 file_clock 开始测量时间的时间,是 1/1/1601 00:00:00。
ISO C++ 标准提供了一个选择,即提供 to_sys() 和 from_sys() 还是 to_utc() 和 from_utc()。 Microsoft 实现选择了 to_utc 和 from_utc。
成员
| 名称 | 描述 |
|---|---|
from_utc |
静态。 将 utc_time 转换为 file_time。 |
now |
静态。 返回当前国际原子时。 |
to_utc |
静态。 将 file_time 转换为 utc_time。 |
非成员
| “属性” | 描述 |
|---|---|
from_stream |
使用指定格式从给定流分析 file_clock。 |
operator<< |
将 file_time 输出到给定流。 |
便利类型别名
| 名称 | 描述 |
|---|---|
file_clock::duration |
在 Microsoft 的实现中,它是 duration<long long, ratio<1, 10'000'000> 的同义词。 它表示以 100 纳秒为单位测量的持续时间。 |
file_clock::time_point |
time_point<File_time_clock> 的同义词。 用于表示此时钟的 time_point。 |
file_clock::period |
在 Microsoft 的实现中,它是 ratio<1, 10'000'000> 的同义词。 它以秒(100 纳秒)为单位表示持续时间中每个计时周期之间的时间。 |
file_clock::rep |
用于表示此时钟的 file_clock::duration 中的整数单位的类型 (long long) 的同义词。 |
相关
| 名称 | 描述 |
|---|---|
file_time |
time_point<file_clock, Duration> 的同义词。 表示 file_clock 的 time_point。 指定 Duration。 在 std::chrono 中定义 |
公共常数
| “属性” | 描述 |
|---|---|
file_clock::is_steady constant |
指示时钟类型是否为稳定。 其值为 false。 |
要求
标头: <chrono> (自C++20以来)
命名空间:std::chrono
编译器选项: /std:c++latest
from_utc
将 utc_time 转换为 file_time 的静态方法。
template <class Duration>
static file_time<common_type_t<_Duration, chrono::seconds>>
from_utc(const utc_time<Duration>& t);
参数
t
要转换的 utc_time。
返回值
一个 file_time,将等效的 utc_time 表示为 t。 它的计算方法是 utc_clock::to_sys(utc_time).time_since_epoch() 减去 2017 年 1 月 1 日之前的闰秒数 (27)。 Windows 10 版本 1809 和 Windows Server 2019 引入了对闰秒的支持。 默认情况下,该支持处于启用状态,但可以将其禁用。 启用后,只有 2018 年 7 月之后的闰秒(而不是 2017 年 1 月 1 日至 2018 年 7 月之间的闰秒)才会包含在时间内。
我们建议你使用 std::chrono::clock_cast 转换时钟之间的时间点,而不是直接调用此函数。 这与 file_clock 特别相关,因为 ISO C++ 标准允许此类型定义 to_utc 和 from_utc 或 to_sys 和 from_sys。 由于具体实现内容可能因供应商而异,因此可以改用所有库供应商都提供的 clock_cast。
示例: from_utc
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
std::cout << clock_cast<file_clock>(utc_clock::now());
return 0;
}
2021-08-17 00:20:41.2594557
to_utc
将 file_time 转换为 utc_time 的静态方法。
template <class Duration>
static utc_time<common_type_t<Duration, seconds>>
to_utc(const file_time<Duration>& t);
参数
t
要转换的 file_time。
返回值
一个 utc_time,将等效的 file_time 表示为 t。 我们建议你使用 std::chrono::clock_cast 转换时钟之间的时间点,而不是直接调用此函数。 这与 file_clock 特别相关,因为 ISO C++ 标准允许此类型定义 to_utc 和 from_utc 或 to_sys 和 from_sys。 由于具体实现内容可能因供应商而异,因此可以改用所有库供应商都提供的 clock_cast。
示例: to_utc
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
std::cout << clock_cast<std::chrono::utc_clock>(file_clock::now());
return 0;
}
2021-08-17 00:20:41.2594557
is_steady
指定时钟类型是否为稳定的静态值。 在 Microsoft 实现中,is_steady 是 false。 这使得此时钟不适合用于测量操作所需时长,因为计时时可以调整不稳定的时钟,所以测量的时间可能有偏差,甚至是负数。 请改用 high_resolution_clock 来为事件计时。
static const bool is_steady = false;
现在
静态方法,返回当前的系统时间,分辨率以纳秒为单位,由 file_clock 的时期调整。
static time_point now() noexcept;
返回值
表示当前对象的 time_point 对象。
另请参阅
<chrono>
gps_clock class
high_resolution_clock
local_t 结构
steady_clock 结构
system_clock 结构
tai_clock 类
utc_clock 类
头文件引用