Win32FileTimeConverter (#3967)
This commit is contained in:
parent
c8d79610e0
commit
53797c82ce
@ -5,6 +5,7 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <azure/core/datetime.hpp>
|
||||
#include <azure/storage/blobs/blob_options.hpp>
|
||||
#include <azure/storage/common/storage_common.hpp>
|
||||
|
||||
@ -28,4 +29,48 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake { nam
|
||||
|
||||
Blobs::BlobClientOptions GetBlobClientOptions(const DataLakeClientOptions& options);
|
||||
|
||||
/**
|
||||
* @brief Provides conversion methods for Win32 FILETIME to an #Azure::DateTime.
|
||||
*
|
||||
*/
|
||||
class Win32FileTimeConverter final {
|
||||
public:
|
||||
/**
|
||||
* @brief Converts Win32 FILETIME to an #Azure::DateTime.
|
||||
*
|
||||
* @param win32Filetime The number of 100-nanoseconds since 1601-01-01.
|
||||
* @return Calculated #Azure::DateTime.
|
||||
*/
|
||||
static DateTime Win32FileTimeToDateTime(int64_t win32Filetime)
|
||||
{
|
||||
auto t = DateTime(1601) + Azure::_detail::Clock::duration(win32Filetime);
|
||||
return DateTime(t);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Converts a DateTime to Win32 FILETIME.
|
||||
*
|
||||
* @param dateTime The `%DateTime` to convert.
|
||||
* @return The number of 100-nanoseconds since 1601-01-01.
|
||||
*/
|
||||
static int64_t DateTimeToWin32FileTime(DateTime const& dateTime)
|
||||
{
|
||||
return std::chrono::duration_cast<Azure::_detail::Clock::duration>(dateTime - DateTime(1601))
|
||||
.count();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief An instance of `%Win32FileTimeConverter` class cannot be created.
|
||||
*
|
||||
*/
|
||||
Win32FileTimeConverter() = delete;
|
||||
|
||||
/**
|
||||
* @brief An instance of `%Win32FileTimeConverter` class cannot be destructed, because no
|
||||
* instance can be created.
|
||||
*
|
||||
*/
|
||||
~Win32FileTimeConverter() = delete;
|
||||
};
|
||||
|
||||
}}}}} // namespace Azure::Storage::Files::DataLake::_detail
|
||||
|
||||
Loading…
Reference in New Issue
Block a user