public static void Main()
Console.WriteLine(a.ToJavaScriptMilliseconds1());
Console.WriteLine(a.ToJavaScriptMilliseconds2());
Console.WriteLine(DateTimeJavaScriptConverter.FromJavaScriptMilliseconds(a.ToJavaScriptMilliseconds1()));
Console.WriteLine(DateTimeJavaScriptConverter.FromJavaScriptMilliseconds(a.ToJavaScriptMilliseconds2()));
internal static class DateTimeJavaScriptConverter
private static readonly long _datetimeMinTimeTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
public static long ToJavaScriptMilliseconds1(this DateTime dt)
return (dt.ToUniversalTime().Ticks - _datetimeMinTimeTicks) / 10000;
public static long ToJavaScriptMilliseconds2(this DateTime dt)
return (((DateTimeOffset)dt).ToUnixTimeMilliseconds());
public static DateTime FromJavaScriptMilliseconds(long milliseconds)
return new DateTime(ticks: (milliseconds * 10000) + _datetimeMinTimeTicks);