Skip to content

Instantly share code, notes, and snippets.

@dbeattie71
Forked from txdv/Epoch.cs
Created November 6, 2012 20:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dbeattie71/4027121 to your computer and use it in GitHub Desktop.
Save dbeattie71/4027121 to your computer and use it in GitHub Desktop.
Epoch class for handling unix times
using System;
namespace Epoch
{
public class Epoch
{
static readonly DateTime epochStart = new DateTime(1970, 1, 1, 0, 0, 0);
static readonly DateTimeOffset epochDateTimeOffset = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
public static DateTime FromUnix(int secondsSinceepoch)
{
return epochStart.AddSeconds(secondsSinceepoch);
}
public static DateTimeOffset FromUnix(int secondsSinceEpoch, int timeZoneOffsetInMinutes)
{
var utcDateTime = epochDateTimeOffset.AddSeconds(secondsSinceEpoch);
var offset = TimeSpan.FromMinutes(timeZoneOffsetInMinutes);
return new DateTimeOffset(utcDateTime.DateTime.Add(offset), offset);
}
public static int ToUnix(DateTime dateTime)
{
return (int)(dateTime - epochStart).TotalSeconds;
}
public static int Now {
get {
return (int)(DateTime.UtcNow - epochStart).TotalSeconds;
}
}
}
namespace Extensions
{
public static class EpochExtensions
{
public static int ToUnix(this DateTime dateTime)
{
return Epoch.ToUnix(dateTime);
}
public static DateTime FromUnix(this int secondsSinceEpoch)
{
return Epoch.FromUnix(secondsSinceEpoch);
}
public static DateTimeOffset FromUnix(this int secondsSinceEpoch, int timeZoneOffsetInMinutes)
{
return Epoch.FromUnix(secondsSinceEpoch, timeZoneOffsetInMinutes);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment