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;
}
}
}