Fixed timer for non-UTC zones (#560)
* Fixed timer for non-UTC zones * Added UT and removed unused method --------- Co-authored-by: Alex <clodanSPT@hotmail.com> Co-authored-by: Chomp <27521899+chompDev@users.noreply.github.com>
This commit is contained in:
@@ -34,7 +34,7 @@ public class WeatherHelper(ISptLogger<WeatherHelper> logger, TimeUtil timeUtil,
|
||||
var twentyFourHoursSeconds = timeUtil.GetHoursAsSeconds(24);
|
||||
var currentTimestampSeconds = timestamp;
|
||||
|
||||
var tarkovTime = timeUtil.GetDateTimeFromTimeStamp(
|
||||
var tarkovTime = timeUtil.GetUtcDateTimeFromTimeStamp(
|
||||
(long)(russiaOffsetSeconds + currentTimestampSeconds * _weatherConfig.Acceleration) % twentyFourHoursSeconds
|
||||
);
|
||||
|
||||
|
||||
@@ -152,9 +152,14 @@ public class TimeUtil
|
||||
return DateTimeOffset.FromUnixTimeSeconds(timeStamp).DateTime;
|
||||
}
|
||||
|
||||
public int GetSecondsAsMilliseconds(int seconds)
|
||||
/// <summary>
|
||||
/// Takes a unix timestamp and converts to its UTC date
|
||||
/// </summary>
|
||||
/// <param name="timeStamp"></param>
|
||||
/// <returns></returns>
|
||||
public DateTime GetUtcDateTimeFromTimeStamp(long timeStamp)
|
||||
{
|
||||
return seconds * 60 * 1000;
|
||||
return DateTimeOffset.FromUnixTimeSeconds(timeStamp).UtcDateTime;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
using NUnit.Framework;
|
||||
using SPTarkov.Server.Core.Helpers;
|
||||
|
||||
namespace UnitTests.Tests.Helpers;
|
||||
|
||||
[TestFixture]
|
||||
public class WeatherHelperTests
|
||||
{
|
||||
private WeatherHelper _weatherHelper;
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void Initialize()
|
||||
{
|
||||
_weatherHelper = DI.GetInstance().GetService<WeatherHelper>();
|
||||
}
|
||||
|
||||
[TestCase(1755621231, 22, 56, 57)]
|
||||
[TestCase(1754120368, 8, 36, 16)]
|
||||
[TestCase(1714120368, 14, 49, 36)]
|
||||
[TestCase(1724120368, 19, 16, 16)]
|
||||
public void GetInRaidTime_WithDifferentTimestamps_ExpectCorrectEFTTime(
|
||||
long timestamp,
|
||||
int expectedHour,
|
||||
int expectedMinute,
|
||||
int expectedSecond)
|
||||
{
|
||||
var timeOutput = _weatherHelper.GetInRaidTime(timestamp);
|
||||
|
||||
Assert.AreEqual(expectedHour, timeOutput.Hour, $"Unexpected hour! {timeOutput.Hour}");
|
||||
Assert.AreEqual(expectedMinute, timeOutput.Minute, $"Unexpected minute! {timeOutput.Minute}");
|
||||
Assert.AreEqual(expectedSecond, timeOutput.Second, $"Unexpected second! {timeOutput.Second}");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user