using System.Globalization;
using System.Diagnostics;
string datetimeString = "2024-07-16T02:28:45.516224833Z";
TimestampDemo(datetimeString);
private static void TimestampDemo(string datetimeString)
Console.WriteLine("================= TimestampDemo : START =================");
DateTimeOffset dateTimeOffset = DateTimeOffset.Parse(datetimeString, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
Console.WriteLine(dateTimeOffset.Ticks.ToString("N0"));
long unixTimeSeconds = dateTimeOffset.ToUnixTimeSeconds();
Console.WriteLine($"Total Seconds: {dateTimeOffset.TimeOfDay.TotalSeconds.ToString("N10", CultureInfo.InvariantCulture)}");
double fractionalSeconds = dateTimeOffset.TimeOfDay.TotalSeconds % 1;
decimal unixTimestamp = unixTimeSeconds + (decimal)fractionalSeconds;
Console.WriteLine(unixTimestamp.ToString("N9", CultureInfo.InvariantCulture));
var utcNow = DateTimeOffset.UtcNow;
long utcNowTicks = utcNow.Ticks;
Console.WriteLine($"UTCNow ticks: {utcNowTicks.ToString("N0")}");
var baseTicks = (new DateTime(1970, 1, 1)).Ticks;
Console.WriteLine($"UNIX ticks: {baseTicks.ToString("N0")}");
Console.WriteLine($"subtra ticks: {(utcNowTicks - baseTicks).ToString("N0").PadLeft(baseTicks.ToString("N0").Length, ' ')}");
Console.WriteLine($"subtra milli: {utcNow.ToUnixTimeMilliseconds().ToString("N0").PadLeft(baseTicks.ToString("N0").Length, ' ')}");
Console.WriteLine("================= TimestampDemo : END ===================\n");
private static void PicoSecondDemo()
Stopwatch stopwatch = new Stopwatch();
System.Threading.Thread.Sleep(1);
long elapsedTicks = stopwatch.ElapsedTicks;
long ticksPerSecond = Stopwatch.Frequency;
double elapsedSeconds = (double)elapsedTicks / ticksPerSecond;
double elapsedPicoseconds = elapsedSeconds * 1e12;
Console.WriteLine($"Elapsed time: {elapsedPicoseconds} picoseconds");