using System; namespace LibGit2Sharp.Core { /// /// Provides helper methods to help converting between Epoch (unix timestamp) and . /// public static class Epoch { private static readonly DateTimeOffset epochDateTimeOffset = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero); /// /// Builds a from a Unix timestamp and a timezone offset. /// /// The number of seconds since 00:00:00 UTC on 1 January 1970. /// The number of minutes from UTC in a timezone. /// A representing this instant. public static DateTimeOffset ToDateTimeOffset(long secondsSinceEpoch, int timeZoneOffsetInMinutes) { DateTimeOffset utcDateTime = epochDateTimeOffset.AddSeconds(secondsSinceEpoch); TimeSpan offset = TimeSpan.FromMinutes(timeZoneOffsetInMinutes); return new DateTimeOffset(utcDateTime.DateTime.Add(offset), offset); } /// /// Converts the part of a into a Unix timestamp. /// /// The to convert. /// The number of seconds since 00:00:00 UTC on 1 January 1970. public static Int32 ToSecondsSinceEpoch(this DateTimeOffset date) { DateTimeOffset utcDate = date.ToUniversalTime(); return (Int32)utcDate.Subtract(epochDateTimeOffset).TotalSeconds; } } }