file_clock
class
This clock can represent the range and resolution of file time values used in the file system.
Syntax
using file_clock = std::filesystem::_File_time_clock; // C++20
Remarks
In the Microsoft implementation, the epoch, or the time from which the file_clock
starts measuring time, is 1/1/1601 00:00:00.
The ISO C++ Standard provides a choice between providing to_sys()
and from_sys()
, or to_utc()
and from_utc()
. The Microsoft implementation chose to_utc and from_utc.
Members
Name | Description |
---|---|
from_utc |
Static. Converts a utc_time to a file_time . |
now |
Static. Returns the current International Atomic Time. |
to_utc |
Static. Converts a file_time to utc_time . |
Non-members
Name | Description |
---|---|
from_stream |
Parse a file_clock from the given stream using the specified format. |
operator<< |
Output file_time to the given stream. |
Convenience type aliases
Name | Description |
---|---|
file_clock::duration |
In Microsoft's implementation, it's a synonym for duration<long long, ratio<1, 10'000'000> . It represents a duration of time measured in units of 100 nanoseconds. |
file_clock::time_point |
A synonym for time_point<File_time_clock> . Used to represent a time_point for this clock. |
file_clock::period |
In Microsoft's implementation, it's a synonym for ratio<1, 10'000'000> . It represents the time in seconds (100 nanoseconds) between each tick in the duration. |
file_clock::rep |
A synonym for the type (long long ) used to represent the integral units in this clock's file_clock::duration . |
Related
Name | Description |
---|---|
file_time |
A synonym for time_point<file_clock, Duration> . Represents a time_point for a file_clock . You specify the Duration . Defined in std::chrono |
Public constants
Name | Description |
---|---|
file_clock::is_steady constant |
Indicates whether the clock type is steady. Its value is false . |
Requirements
Header: <chrono>
(since C++20)
Namespace: std::chrono
Compiler Option: /std:c++latest
from_utc
Static method that converts a utc_time
to a file_time
.
template <class Duration>
static file_time<common_type_t<_Duration, chrono::seconds>>
from_utc(const utc_time<Duration>& t);
Parameters
t
The utc_time
to convert.
Return value
A file_time
that represents the equivalent utc_time
as t
. It's calculated as utc_clock::to_sys(utc_time).time_since_epoch()
minus the number of leap seconds before January 1, 2017 (27). Windows 10 version 1809 and Windows Server 2019 introduced support for leap seconds. That support is enabled by default, though it can be disabled. When enabled, only leap seconds after July 2018 (not the ones between January 1, 2017 and July 2018) are included in the time.
We recommend you use std::chrono::clock_cast
to convert time points between clocks rather than call this function directly. This is particularly relevant for file_clock
because the ISO C++ Standard allows this type to define either to_utc
and from_utc
, or to_sys
and from_sys
. Since which is implemented may vary by vendor, you can use clock_cast
instead, which is provided by all library vendors.
Example: 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
Static method that converts a file_time
to a utc_time
.
template <class Duration>
static utc_time<common_type_t<Duration, seconds>>
to_utc(const file_time<Duration>& t);
Parameters
t
The file_time
to convert.
Return Value
A utc_time
that represents the equivalent file_time
as t
. We recommend you use std::chrono::clock_cast
to convert time points between clocks, rather than call this function directly. This is particularly relevant for file_clock
because the ISO C++ Standard allows this type to define either to_utc
and from_utc
, or to_sys
and from_sys
. Since which is implemented may vary by vendor, you can use clock_cast
instead, which is provided by all library vendors.
Example: 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
Static value that specifies whether the clock type is steady. In the Microsoft implementation, is_steady
is false
. This makes this clock unsuitable for measuring how long an operation takes because an unsteady clock can be adjusted while you're timing something so the measured time may be off or even negative. Use a high_resolution_clock
to time events, instead.
static const bool is_steady = false;
now
Static method that returns the current system time, with nanosecond resolution, adjusted by the epoch of the file_clock
.
static time_point now() noexcept;
Return Value
A time_point object that represents the current time.
See also
<chrono>
gps_clock class
high_resolution_clock
local_t
struct
steady_clock
struct
system_clock
struct
tai_clock
class
utc_clock
class
Header Files Reference