How to get unix timestamp in C#

By FoxLearn 1/3/2025 1:34:29 AM   945
In C#, you can get the Unix timestamp, which represents the number of seconds that have elapsed since January 1, 1970 (Unix epoch), in a couple of ways.

A Unix timestamp, also known as a POSIX timestamp or epoch time, is a way of representing a specific point in time. It counts the number of seconds that have passed since January 1, 1970, at 00:00:00 UTC.

How to get the current time in C#?

In C#, DateTime.Now returns the current local date and time, taking into account the system's time zone settings.

DateTime currentTime = DateTime.Now;
Console.WriteLine("Current local time is: " + currentTime);

How to calculate Unix timestamp?

A Unix timestamp is the number of seconds that have elapsed since January 1, 1970, at midnight UTC. It is calculated by subtracting the Unix epoch (January 1, 1970) from the current date and time in UTC.

How to get the unix timestamp in C#?

In C#, you can get a Unix timestamp by using DateTime.UtcNow and subtracting the Unix epoch time (January 1, 1970). This gives you the number of seconds between the current UTC time and the Unix epoch.

Int32 unixTimestamp = (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;

DateTime.UtcNow can be replaced with any DateTime object to get the Unix timestamp for that specific time. Additionally, DateTime.UnixEpoch (though poorly documented by Microsoft) can be used as a substitute for creating a new DateTime(1970, 1, 1) to represent the Unix epoch.

How to convert timestamp to Unix time in C#?

To convert a DateTime timestamp to a Unix time in C#, you need to calculate the number of seconds (or milliseconds) that have elapsed since the Unix epoch (1970-01-01T00:00:00Z).

For example unix timestamp format:

1633024800 (which corresponds to October 1, 2021, 00:00:00 UTC).

You can use DateTimeOffset and ToUnixTimeSeconds() to get unix timestamp in C#

For example:

// Get the current DateTimeOffset
DateTimeOffset dto = DateTimeOffset.Now;

// Convert to Unix timestamp (seconds since Jan 1, 1970)
long unixTime = dto.ToUnixTimeSeconds();

// Unix timestamp (seconds): 1720687008

Uses DateTimeOffset which directly provides the ToUnixTimeSeconds() method to get the Unix timestamp.

You can also use DateTime and manual calculation to get unix timestamp in C#

// Get the current DateTime in UTC
DateTime dt = DateTime.UtcNow;

// Convert to Unix timestamp (seconds since Jan 1, 1970)
long unixTimeStamp = (long)(dt.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

// Unix timestamp (seconds): 1720687153

You can replace DateTime.UtcNow with any DateTime object to get the Unix timestamp for that specific date and time.

Uses DateTime.UtcNow to get the current UTC time, subtracts the Unix epoch (January 1, 1970 UTC), and converts the resulting TimeSpan to seconds.

How to convert seconds unix timestamp to DateTimeOffset type (UTC)

// Unix timestamp in seconds
long unixTimestamp = 1720687153; // Replace with your Unix timestamp

// Convert Unix timestamp to DateTimeOffset
DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(unixTimestamp);
        
// Convert to UTC
DateTimeOffset utcDateTimeOffset = dateTimeOffset.ToUniversalTime();

// Output the DateTimeOffset (UTC): 2024-07-11 08:39:13 +00:00
Console.WriteLine(dateTimeOffset.ToString("yyyy-MM-ddTHH:mm:ss.fffK"));

How to convert milliseconds unix timestamp to DateTimeOffset type (UTC)

// Example Unix timestamp in milliseconds
long unixTimestampMilliseconds = 1720687153000; // Replace this with your Unix timestamp in milliseconds

// Create DateTimeOffset object in UTC
DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(unixTimestampMilliseconds);

// Ensure it's in UTC
dateTimeOffset = dateTimeOffset.ToUniversalTime();

// Output the DateTimeOffset UTC: 2024-07-11T08:39:13.000+00:00
Console.WriteLine(dateTimeOffset.ToString("yyyy-MM-ddTHH:mm:ss.fffK"));

How to convert current UTC time to unix timestamp in seconds

// Example Unix timestamp in seconds: 1720688109
long unixTimestampSeconds = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

How to convert current UTC time to unix timestamp in milliseconds

// Example Unix timestamp in milli seconds: 1720688075851
long unixTimestampMilliseconds = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();