NuGet\Install-Package UtcMilliTime -Version 1.0.1
dotnet add package UtcMilliTime --version 1.0.1
<PackageReference Include="UtcMilliTime" Version="1.0.1" />
paket add UtcMilliTime --version 1.0.1
#r "nuget: UtcMilliTime, 1.0.1"
// Install UtcMilliTime as a Cake Addin #addin nuget:?package=UtcMilliTime&version=1.0.1 // Install UtcMilliTime as a Cake Tool #tool nuget:?package=UtcMilliTime&version=1.0.1
Improve .NET to Unix time compatibility. UtcMilliTime is for Windows devs to get timestamps in the Unix Time Milliseconds format, from a software defined clock that syncs with NTP (network) time.
In .NET, the simple standard above becomes complicated. In common .NET projects, developers may feel it necessary to use .NET's DateTime, which counts ticks of a different precision in a different Epoch. It has been awkward to convert between these two formats as mentioned.
Now UtcMilliTime - an open source package on GitHub - brings the Time.Now idiom to .NET code running on Windows. It is open source, MIT licensed, and maintained by J.P. Kusumi (at https://github.com/JPKusumi/UtcMilliTime).
|.NET||net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows|
|.NET Core||netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1|
|.NET Standard||netstandard2.0 netstandard2.1|
|.NET Framework||net461 net462 net463 net47 net471 net472 net48|
- No dependencies.
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
For a source of timestamps, you can use UtcMilliTime.dll, a less-than-20KB library. Install the NuGet package or otherwise set a reference to the dll. Add
to the top of the code file where you will use it. At class level or early in your code, say-
ITime Time = Clock.Time;
or you may prefer to use dependency injection which would allow you to mock the ITime interface. Then, in the normal course of your code, you can say:
var timestamp = Time.Now;
That will get you an Int64 (long) timestamp value expressing the whole number of milliseconds that have elapsed in the Unix Epoch since 1/1/1970 00:00:00, excluding leap seconds. Also, just once at the beginning of run time, you should use this line-
Time.SuppressNetworkCalls = false;
By default, the component would pass along device time - the time set on the local device by Windows and perhaps the user. The line above gives the clock permission to use the network, for synchronization with an NTP (Network Time Protocol) server. The clock then updates itself (asynchronously) to network time, and it leaves device time alone. Device time will be ignored for the rest of run time.
(However, if permission is not given as above, then the clock yields device time, and network time will be ignored.)
For more info, see the ReadMe at https://github.com/JPKusumi/UtcMilliTime