diff --git a/Libraries/SPTarkov.Server.Core/Helpers/WeatherHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/WeatherHelper.cs
index 4c75c7f2a..6034694f1 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/WeatherHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/WeatherHelper.cs
@@ -34,7 +34,7 @@ public DateTime GetInRaidTime(long timestamp)
var twentyFourHoursSeconds = timeUtil.GetHoursAsSeconds(24);
var currentTimestampSeconds = timestamp;
- var tarkovTime = timeUtil.GetDateTimeFromTimeStamp(
+ var tarkovTime = timeUtil.GetUtcDateTimeFromTimeStamp(
(long)(russiaOffsetSeconds + currentTimestampSeconds * _weatherConfig.Acceleration) % twentyFourHoursSeconds
);
diff --git a/Libraries/SPTarkov.Server.Core/Utils/TimeUtil.cs b/Libraries/SPTarkov.Server.Core/Utils/TimeUtil.cs
index 67d524285..2958293ae 100644
--- a/Libraries/SPTarkov.Server.Core/Utils/TimeUtil.cs
+++ b/Libraries/SPTarkov.Server.Core/Utils/TimeUtil.cs
@@ -152,9 +152,14 @@ public DateTime GetDateTimeFromTimeStamp(long timeStamp)
return DateTimeOffset.FromUnixTimeSeconds(timeStamp).DateTime;
}
- public int GetSecondsAsMilliseconds(int seconds)
+ ///
+ /// Takes a unix timestamp and converts to its UTC date
+ ///
+ ///
+ ///
+ public DateTime GetUtcDateTimeFromTimeStamp(long timeStamp)
{
- return seconds * 60 * 1000;
+ return DateTimeOffset.FromUnixTimeSeconds(timeStamp).UtcDateTime;
}
///
diff --git a/Testing/UnitTests/Tests/Helpers/WeatherHelperTests.cs b/Testing/UnitTests/Tests/Helpers/WeatherHelperTests.cs
new file mode 100644
index 000000000..10a722aef
--- /dev/null
+++ b/Testing/UnitTests/Tests/Helpers/WeatherHelperTests.cs
@@ -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();
+ }
+
+ [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}");
+ }
+}