file_clock

此时钟可以表示文件系统中使用的文件时间值的范围和分辨率。

语法

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_utcfrom_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_clocktime_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_utcfrom_utcto_sysfrom_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_utcfrom_utcto_sysfrom_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_steadyfalse。 这使得此时钟不适合用于测量操作所需时长,因为计时时可以调整不稳定的时钟,所以测量的时间可能有偏差,甚至是负数。 请改用 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
头文件引用