Unix Timestamp in C#

Get the current Unix timestamp

C#
// .NET 4.6+ (recommended)
long seconds = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
long millis  = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();

// Legacy approach
long legacySeconds = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;

Convert epoch to DateTime

C#
long epoch = 1700000000L;

// Using DateTimeOffset (recommended)
DateTimeOffset dto = DateTimeOffset.FromUnixTimeSeconds(epoch);
Console.WriteLine(dto.UtcDateTime);          // 2023-11-14 22:13:20
Console.WriteLine(dto.ToString("o"));        // ISO 8601

// From milliseconds
DateTimeOffset dtoMs = DateTimeOffset.FromUnixTimeMilliseconds(1700000000000L);

// Convert to local time
DateTimeOffset local = dto.ToLocalTime();

Convert DateTime to epoch

C#
DateTime dt = new DateTime(2023, 11, 14, 22, 13, 20, DateTimeKind.Utc);
long epoch = new DateTimeOffset(dt).ToUnixTimeSeconds();

// From a parsed string
DateTime parsed = DateTime.Parse("2023-11-14T22:13:20Z").ToUniversalTime();
long epoch2 = new DateTimeOffset(parsed).ToUnixTimeSeconds();

Timezones

C#
long epoch = 1700000000L;
DateTimeOffset utc = DateTimeOffset.FromUnixTimeSeconds(epoch);

TimeZoneInfo ist = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime istTime = TimeZoneInfo.ConvertTimeFromUtc(utc.UtcDateTime, ist);
Console.WriteLine(istTime);                  // 2023-11-15 03:43:20

Time arithmetic

C#
DateTimeOffset now = DateTimeOffset.UtcNow;
DateTimeOffset tomorrow = now.AddDays(1);
DateTimeOffset anHourAgo = now.AddHours(-1);

// Check expiry
long expiryEpoch = 1700000000L;
bool isExpired = DateTimeOffset.UtcNow.ToUnixTimeSeconds() > expiryEpoch;

Use the live epoch converter to convert any C# timestamp instantly.