Obsolete UnixTimestampExtensions methods (#2121)

* The equivalent of `public static DateTimeOffset FromUnixTime(this long unixTime)` exists in the framework since .NET Framework 4.6: https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset.fromunixtimeseconds
* The equivalent of `public static long ToUnixTime(this DateTimeOffset date)` exists in the framework since .NET Framework 4.6: https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset.tounixtimeseconds
This commit is contained in:
Cédric Luthi
2020-03-03 14:30:30 +01:00
committed by GitHub
parent faedc8dc35
commit c94cd05b8b
8 changed files with 18 additions and 73 deletions

View File

@@ -4,7 +4,6 @@ using System.Collections.ObjectModel;
using System.Threading;
using System.Threading.Tasks;
using NSubstitute;
using Octokit.Helpers;
using Xunit;
namespace Octokit.Tests.Clients
@@ -232,10 +231,10 @@ namespace Octokit.Tests.Clients
var codeFrequency = await statisticsClient.GetCodeFrequency("owner", "name");
Assert.Equal(2, codeFrequency.AdditionsAndDeletionsByWeek.Count);
Assert.Equal(firstTimestamp.FromUnixTime(), codeFrequency.AdditionsAndDeletionsByWeek[0].Timestamp);
Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(firstTimestamp), codeFrequency.AdditionsAndDeletionsByWeek[0].Timestamp);
Assert.Equal(10, codeFrequency.AdditionsAndDeletionsByWeek[0].Additions);
Assert.Equal(52, codeFrequency.AdditionsAndDeletionsByWeek[0].Deletions);
Assert.Equal(secondTimestamp.FromUnixTime(), codeFrequency.AdditionsAndDeletionsByWeek[1].Timestamp);
Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(secondTimestamp), codeFrequency.AdditionsAndDeletionsByWeek[1].Timestamp);
Assert.Equal(0, codeFrequency.AdditionsAndDeletionsByWeek[1].Additions);
Assert.Equal(9, codeFrequency.AdditionsAndDeletionsByWeek[1].Deletions);
}
@@ -260,10 +259,10 @@ namespace Octokit.Tests.Clients
var codeFrequency = await statisticsClient.GetCodeFrequency(1);
Assert.Equal(2, codeFrequency.AdditionsAndDeletionsByWeek.Count);
Assert.Equal(firstTimestamp.FromUnixTime(), codeFrequency.AdditionsAndDeletionsByWeek[0].Timestamp);
Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(firstTimestamp), codeFrequency.AdditionsAndDeletionsByWeek[0].Timestamp);
Assert.Equal(10, codeFrequency.AdditionsAndDeletionsByWeek[0].Additions);
Assert.Equal(52, codeFrequency.AdditionsAndDeletionsByWeek[0].Deletions);
Assert.Equal(secondTimestamp.FromUnixTime(), codeFrequency.AdditionsAndDeletionsByWeek[1].Timestamp);
Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(secondTimestamp), codeFrequency.AdditionsAndDeletionsByWeek[1].Timestamp);
Assert.Equal(0, codeFrequency.AdditionsAndDeletionsByWeek[1].Additions);
Assert.Equal(9, codeFrequency.AdditionsAndDeletionsByWeek[1].Deletions);
}
@@ -290,10 +289,10 @@ namespace Octokit.Tests.Clients
var codeFrequency = await client.GetCodeFrequency("owner", "name", cancellationToken);
Assert.Equal(2, codeFrequency.AdditionsAndDeletionsByWeek.Count);
Assert.Equal(firstTimestamp.FromUnixTime(), codeFrequency.AdditionsAndDeletionsByWeek[0].Timestamp);
Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(firstTimestamp), codeFrequency.AdditionsAndDeletionsByWeek[0].Timestamp);
Assert.Equal(10, codeFrequency.AdditionsAndDeletionsByWeek[0].Additions);
Assert.Equal(52, codeFrequency.AdditionsAndDeletionsByWeek[0].Deletions);
Assert.Equal(secondTimestamp.FromUnixTime(), codeFrequency.AdditionsAndDeletionsByWeek[1].Timestamp);
Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(secondTimestamp), codeFrequency.AdditionsAndDeletionsByWeek[1].Timestamp);
Assert.Equal(0, codeFrequency.AdditionsAndDeletionsByWeek[1].Additions);
Assert.Equal(9, codeFrequency.AdditionsAndDeletionsByWeek[1].Deletions);
}
@@ -320,10 +319,10 @@ namespace Octokit.Tests.Clients
var codeFrequency = await client.GetCodeFrequency(1, cancellationToken);
Assert.Equal(2, codeFrequency.AdditionsAndDeletionsByWeek.Count);
Assert.Equal(firstTimestamp.FromUnixTime(), codeFrequency.AdditionsAndDeletionsByWeek[0].Timestamp);
Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(firstTimestamp), codeFrequency.AdditionsAndDeletionsByWeek[0].Timestamp);
Assert.Equal(10, codeFrequency.AdditionsAndDeletionsByWeek[0].Additions);
Assert.Equal(52, codeFrequency.AdditionsAndDeletionsByWeek[0].Deletions);
Assert.Equal(secondTimestamp.FromUnixTime(), codeFrequency.AdditionsAndDeletionsByWeek[1].Timestamp);
Assert.Equal(DateTimeOffset.FromUnixTimeSeconds(secondTimestamp), codeFrequency.AdditionsAndDeletionsByWeek[1].Timestamp);
Assert.Equal(0, codeFrequency.AdditionsAndDeletionsByWeek[1].Additions);
Assert.Equal(9, codeFrequency.AdditionsAndDeletionsByWeek[1].Deletions);
}

View File

@@ -1,46 +0,0 @@
using System;
using Octokit.Helpers;
using Xunit;
public class UnixTimestampExtensionsTests
{
public class TheToUnixTimeMethod
{
[Fact]
public void ReturnsUnixEpochCorrectly()
{
var epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
Assert.Equal(0, epoch.ToUnixTime());
}
[Fact]
public void ReturnsRandomDateCorrectly()
{
var epoch = new DateTimeOffset(1975, 1, 23, 1, 1, 1, TimeSpan.Zero);
Assert.Equal(159670861, epoch.ToUnixTime());
}
}
public class TheFromUnixTimeMethod
{
[Fact]
public void ReturnsDateFromUnixEpochCorrectly()
{
var epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
var result = ((long)0).FromUnixTime();
Assert.Equal(epoch, result);
}
[Fact]
public void ReturnsDateFromRandomTimeCorrectly()
{
var expected = new DateTimeOffset(1975, 1, 23, 1, 1, 2, TimeSpan.Zero);
var result = ((long)159670862).FromUnixTime();
Assert.Equal(expected, result);
}
}
}

View File

@@ -7,24 +7,24 @@ namespace Octokit.Helpers
/// </summary>
public static class UnixTimestampExtensions
{
static readonly DateTimeOffset epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
/// <summary>
/// Convert a Unix tick to a <see cref="DateTimeOffset"/> with UTC offset
/// </summary>
/// <param name="unixTime">UTC tick</param>
[Obsolete("Use DateTimeOffset.FromUnixTimeSeconds(long seconds) instead.")]
public static DateTimeOffset FromUnixTime(this long unixTime)
{
return epoch.AddSeconds(unixTime);
return DateTimeOffset.FromUnixTimeSeconds(unixTime);
}
/// <summary>
/// Convert <see cref="DateTimeOffset"/> with UTC offset to a Unix tick
/// </summary>
/// <param name="date">Date Time with UTC offset</param>
[Obsolete("Use DateTimeOffset.ToUnixTimeSeconds() instead.")]
public static long ToUnixTime(this DateTimeOffset date)
{
return Convert.ToInt64((date.ToUniversalTime() - epoch).TotalSeconds);
return date.ToUnixTimeSeconds();
}
}
}

View File

@@ -7,7 +7,6 @@ using System.Globalization;
using System.Runtime.Serialization;
#endif
using System.Security;
using Octokit.Helpers;
using Octokit.Internal;
namespace Octokit
@@ -57,7 +56,7 @@ namespace Octokit
/// The date and time at which the current rate limit window resets
/// </summary>
[Parameter(Key = "ignoreThisField")]
public DateTimeOffset Reset { get { return ResetAsUtcEpochSeconds.FromUnixTime(); } }
public DateTimeOffset Reset => DateTimeOffset.FromUnixTimeSeconds(ResetAsUtcEpochSeconds);
/// <summary>
/// The date and time at which the current rate limit window resets - in UTC epoch seconds

View File

@@ -2,7 +2,6 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using Octokit.Helpers;
namespace Octokit
{
@@ -33,7 +32,7 @@ namespace Octokit
{
throw new ArgumentException("Addition and deletion aggregate must only contain three data points.");
}
Timestamp = additionsAndDeletions[0].FromUnixTime();
Timestamp = DateTimeOffset.FromUnixTimeSeconds(additionsAndDeletions[0]);
Additions = Convert.ToInt32(additionsAndDeletions[1]);
Deletions = Convert.ToInt32(additionsAndDeletions[2]);
}

View File

@@ -4,7 +4,6 @@ using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using Octokit.Helpers;
namespace Octokit
{
@@ -37,10 +36,7 @@ namespace Octokit
/// </summary>
public long Week { get; protected set; }
public DateTimeOffset WeekTimestamp
{
get { return Week.FromUnixTime(); }
}
public DateTimeOffset WeekTimestamp => DateTimeOffset.FromUnixTimeSeconds(Week);
/// <summary>
/// Get the number of commits made on any <see cref="DayOfWeek"/>

View File

@@ -2,7 +2,6 @@ using System;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using Octokit.Helpers;
namespace Octokit
{
@@ -37,7 +36,7 @@ namespace Octokit
public DateTimeOffset Week
{
get { return W.FromUnixTime(); }
get { return DateTimeOffset.FromUnixTimeSeconds(W); }
}
public int Additions

View File

@@ -66,7 +66,6 @@ using System.Text;
using Octokit.Reflection;
#if !SIMPLE_JSON_NO_LINQ_EXPRESSION
using System.Linq.Expressions;
using Octokit.Helpers;
#endif
#if SIMPLE_JSON_DYNAMIC
using System.Dynamic;
@@ -1433,11 +1432,11 @@ namespace Octokit
{
if (valueIsLong && (type == typeof(DateTimeOffset) || type == typeof(DateTimeOffset?)))
{
return ((long)value).FromUnixTime();
return DateTimeOffset.FromUnixTimeSeconds((long)value);
}
else if (valueIsLong && (type == typeof(DateTime) || type == typeof(DateTime?)))
{
return ((long)value).FromUnixTime().DateTime;
return DateTimeOffset.FromUnixTimeSeconds((long)value).DateTime;
}
obj = type == typeof(int) || type == typeof(long) || type == typeof(double) || type == typeof(float) || type == typeof(bool) || type == typeof(decimal) || type == typeof(byte) || type == typeof(short)
? Convert.ChangeType(value, type, CultureInfo.InvariantCulture)