diff --git a/LibGit2Sharp.Tests/CommitFixture.cs b/LibGit2Sharp.Tests/CommitFixture.cs
index 179a4975c..5533b7232 100644
--- a/LibGit2Sharp.Tests/CommitFixture.cs
+++ b/LibGit2Sharp.Tests/CommitFixture.cs
@@ -475,12 +475,12 @@ public void CanReadCommitData()
Assert.NotNull(commit.Author);
Assert.Equal("Scott Chacon", commit.Author.Name);
Assert.Equal("schacon@gmail.com", commit.Author.Email);
- Assert.Equal(1273360386, commit.Author.When.ToSecondsSinceEpoch());
+ Assert.Equal(1273360386, commit.Author.When.ToUnixTimeSeconds());
Assert.NotNull(commit.Committer);
Assert.Equal("Scott Chacon", commit.Committer.Name);
Assert.Equal("schacon@gmail.com", commit.Committer.Email);
- Assert.Equal(1273360386, commit.Committer.When.ToSecondsSinceEpoch());
+ Assert.Equal(1273360386, commit.Committer.When.ToUnixTimeSeconds());
Assert.Equal("181037049a54a1eb5fab404658a3a250b44335d7", commit.Tree.Sha);
@@ -889,9 +889,9 @@ public void CanCorrectlyDistinguishAuthorFromCommitter()
using (var repo = new Repository(path))
{
var author = new Signature("Wilbert van Dolleweerd", "getit@xs4all.nl",
- Epoch.ToDateTimeOffset(1244187936, 120));
+ DateTimeOffset.FromUnixTimeSeconds(1244187936).ToOffset(TimeSpan.FromMinutes(120)));
var committer = new Signature("Henk Westhuis", "Henk_Westhuis@hotmail.com",
- Epoch.ToDateTimeOffset(1244286496, 120));
+ DateTimeOffset.FromUnixTimeSeconds(1244286496).ToOffset(TimeSpan.FromMinutes(120)));
Commit c = repo.Commit("I can haz an author and a committer!", author, committer);
diff --git a/LibGit2Sharp.Tests/EpochFixture.cs b/LibGit2Sharp.Tests/EpochFixture.cs
deleted file mode 100644
index 773f4c846..000000000
--- a/LibGit2Sharp.Tests/EpochFixture.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-using System;
-using LibGit2Sharp.Core;
-using Xunit;
-using Xunit.Extensions;
-
-namespace LibGit2Sharp.Tests
-{
- public class EpochFixture
- {
- [Theory]
- [InlineData(0)]
- [InlineData(17)]
- public void UnixTimestampShouldBeCastIntoAUtcBasedDateTimeOffset(long secondsSinceEpoch)
- {
- DateTimeOffset date = Epoch.ToDateTimeOffset(secondsSinceEpoch, 0);
- Assert.Equal(0, date.Offset.TotalMinutes);
-
- Assert.Equal(TimeSpan.Zero, date.Offset);
- Assert.Equal(DateTimeKind.Utc, date.UtcDateTime.Kind);
- }
-
- [Theory]
- [InlineData(0, 0)]
- [InlineData(17, -120)]
- [InlineData(31, 60)]
- public void AreEqual(long secondsSinceEpoch, int timezoneOffset)
- {
- DateTimeOffset one = Epoch.ToDateTimeOffset(secondsSinceEpoch, timezoneOffset);
- DateTimeOffset another = Epoch.ToDateTimeOffset(secondsSinceEpoch, timezoneOffset);
-
- Assert.Equal(one, another);
- Assert.Equal(another, one);
-
- Assert.True(one == another);
- Assert.True(another == one);
-
- Assert.False(one != another);
- Assert.False(another != one);
-
- Assert.Equal(one.GetHashCode(), another.GetHashCode());
- }
-
- [Theory]
- [InlineData(1291801952, "Wed, 08 Dec 2010 09:52:32 +0000")]
- [InlineData(1234567890, "Fri, 13 Feb 2009 23:31:30 +0000")]
- [InlineData(1288114383, "Tue, 26 Oct 2010 17:33:03 +0000")]
- public void UnixTimestampShouldShouldBeCastIntoAPlainUtcDate(long secondsSinceEpoch, string expected)
- {
- DateTimeOffset expectedDate = DateTimeOffset.Parse(expected);
-
- DateTimeOffset date = Epoch.ToDateTimeOffset(secondsSinceEpoch, 0);
-
- Assert.Equal(secondsSinceEpoch, date.ToSecondsSinceEpoch());
- Assert.Equal(expectedDate, date);
- Assert.Equal(TimeSpan.Zero, date.Offset);
- }
-
- [Theory]
- [InlineData(1250379778, -210, "Sat, 15 Aug 2009 20:12:58 -0330")]
- public void UnixTimestampAndTimezoneOffsetShouldBeCastIntoAUtcDateBearingAnOffset(long secondsSinceEpoch, Int32 offset, string expected)
- {
- DateTimeOffset expectedDate = DateTimeOffset.Parse(expected);
-
- DateTimeOffset date = Epoch.ToDateTimeOffset(secondsSinceEpoch, offset);
- Assert.Equal(offset, date.Offset.TotalMinutes);
- Assert.Equal(secondsSinceEpoch, date.ToSecondsSinceEpoch());
-
- Assert.Equal(expectedDate, date);
- Assert.Equal(expectedDate.Offset, date.Offset);
- }
-
- [Theory]
- [InlineData("Wed, 08 Dec 2010 09:52:32 +0000", 1291801952, 0)]
- [InlineData("Fri, 13 Feb 2009 23:31:30 +0000", 1234567890, 0)]
- [InlineData("Tue, 26 Oct 2010 17:33:03 +0000", 1288114383, 0)]
- [InlineData("Sat, 14 Feb 2009 00:31:30 +0100", 1234567890, 60)]
- [InlineData("Sat, 15 Aug 2009 20:12:58 -0330", 1250379778, -210)]
- [InlineData("Sat, 15 Aug 2009 23:42:58 +0000", 1250379778, 0)]
- [InlineData("Sun, 16 Aug 2009 00:42:58 +0100", 1250379778, 60)]
- public void DateTimeOffsetShoudlBeCastIntoAUnixTimestampAndATimezoneOffset(string formattedDate, long expectedSeconds, Int32 expectedOffset)
- {
- DateTimeOffset when = DateTimeOffset.Parse(formattedDate);
- DateTimeOffset date = Epoch.ToDateTimeOffset(expectedSeconds, expectedOffset);
- Assert.Equal(when, date);
- }
- }
-}
diff --git a/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj b/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj
index 6837e02eb..ddb97b176 100644
--- a/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj
+++ b/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj
@@ -21,7 +21,6 @@
-
diff --git a/LibGit2Sharp.Tests/NoteFixture.cs b/LibGit2Sharp.Tests/NoteFixture.cs
index e3cb9d7a0..98801e3b2 100644
--- a/LibGit2Sharp.Tests/NoteFixture.cs
+++ b/LibGit2Sharp.Tests/NoteFixture.cs
@@ -10,7 +10,7 @@ namespace LibGit2Sharp.Tests
public class NoteFixture : BaseFixture
{
private static readonly Signature signatureNullToken = new Signature("nulltoken", "emeric.fermas@gmail.com", DateTimeOffset.UtcNow);
- private static readonly Signature signatureYorah = new Signature("yorah", "yoram.harmelin@gmail.com", Epoch.ToDateTimeOffset(1300557894, 60));
+ private static readonly Signature signatureYorah = new Signature("yorah", "yoram.harmelin@gmail.com", DateTimeOffset.FromUnixTimeSeconds(1300557894).ToOffset(TimeSpan.FromMinutes(60)));
[Fact]
public void RetrievingNotesFromANonExistingGitObjectYieldsNoResult()
diff --git a/LibGit2Sharp.Tests/TagFixture.cs b/LibGit2Sharp.Tests/TagFixture.cs
index 5c1628a7b..82a940640 100644
--- a/LibGit2Sharp.Tests/TagFixture.cs
+++ b/LibGit2Sharp.Tests/TagFixture.cs
@@ -13,7 +13,7 @@ public class TagFixture : BaseFixture
private readonly string[] expectedTags = new[] { "e90810b", "lw", "point_to_blob", "tag_without_tagger", "test", };
private static readonly Signature signatureTim = new Signature("Tim Clem", "timothy.clem@gmail.com", TruncateSubSeconds(DateTimeOffset.UtcNow));
- private static readonly Signature signatureNtk = new Signature("nulltoken", "emeric.fermas@gmail.com", Epoch.ToDateTimeOffset(1300557894, 60));
+ private static readonly Signature signatureNtk = new Signature("nulltoken", "emeric.fermas@gmail.com", DateTimeOffset.FromUnixTimeSeconds(1300557894).ToOffset(TimeSpan.FromMinutes(60)));
private const string tagTestSha = "b25fa35b38051e4ae45d4222e795f9df2e43f1d1";
private const string commitE90810BSha = "e90810b8df3e80c413d903f631643c716887138d";
private const string tagE90810BSha = "7b4384978d2493e851f9cca7858815fac9b10980";
diff --git a/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs b/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs
index f1ac7eddd..c188efb9c 100644
--- a/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs
+++ b/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs
@@ -51,8 +51,8 @@ static BaseFixture()
protected static DateTimeOffset TruncateSubSeconds(DateTimeOffset dto)
{
- int seconds = dto.ToSecondsSinceEpoch();
- return Epoch.ToDateTimeOffset(seconds, (int)dto.Offset.TotalMinutes);
+ var seconds = dto.ToUnixTimeSeconds();
+ return DateTimeOffset.FromUnixTimeSeconds(seconds).ToOffset(dto.Offset);
}
private static void SetUpTestEnvironment()
diff --git a/LibGit2Sharp/Core/Epoch.cs b/LibGit2Sharp/Core/Epoch.cs
deleted file mode 100644
index 0f2657267..000000000
--- a/LibGit2Sharp/Core/Epoch.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System;
-
-namespace LibGit2Sharp.Core
-{
- ///
- /// Provides helper methods to help converting between Epoch (unix timestamp) and .
- ///
- internal 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;
- }
- }
-}
diff --git a/LibGit2Sharp/Core/Proxy.cs b/LibGit2Sharp/Core/Proxy.cs
index 9c1d1218f..4bf144524 100644
--- a/LibGit2Sharp/Core/Proxy.cs
+++ b/LibGit2Sharp/Core/Proxy.cs
@@ -2793,7 +2793,7 @@ public static unsafe SignatureHandle git_signature_new(string name, string email
{
git_signature* ptr;
- int res = NativeMethods.git_signature_new(out ptr, name, email, when.ToSecondsSinceEpoch(),
+ int res = NativeMethods.git_signature_new(out ptr, name, email, when.ToUnixTimeSeconds(),
(int)when.Offset.TotalMinutes);
Ensure.ZeroResult(res);
diff --git a/LibGit2Sharp/Core/TarWriter.cs b/LibGit2Sharp/Core/TarWriter.cs
index 7c479cec9..609449316 100644
--- a/LibGit2Sharp/Core/TarWriter.cs
+++ b/LibGit2Sharp/Core/TarWriter.cs
@@ -332,7 +332,7 @@ public UsTarHeader(
this.mode = Convert.ToString(mode, 8).PadLeft(7, '0');
this.size = size;
- unixTime = Convert.ToString(lastModificationTime.ToSecondsSinceEpoch(), 8).PadLeft(11, '0');
+ unixTime = Convert.ToString(lastModificationTime.ToUnixTimeSeconds(), 8).PadLeft(11, '0');
this.userId = userId.PadLeft(7, '0');
this.groupId = userId.PadLeft(7, '0');
this.userName = userName;
diff --git a/LibGit2Sharp/Signature.cs b/LibGit2Sharp/Signature.cs
index 003abd629..bad656d05 100644
--- a/LibGit2Sharp/Signature.cs
+++ b/LibGit2Sharp/Signature.cs
@@ -21,7 +21,7 @@ internal unsafe Signature(git_signature* sig)
{
name = LaxUtf8Marshaler.FromNative(sig->name);
email = LaxUtf8Marshaler.FromNative(sig->email);
- when = Epoch.ToDateTimeOffset(sig->when.time, sig->when.offset);
+ when = DateTimeOffset.FromUnixTimeSeconds(sig->when.time).ToOffset(TimeSpan.FromMinutes(sig->when.offset));
}
///