Added DateTimeExtensions
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
namespace SPTarkov.Server.Core.Extensions
|
||||
{
|
||||
public static class DateTimeExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Formats the time part of a date as a UTC string.
|
||||
/// </summary>
|
||||
/// <param name="dateTimeOffset">The date to format in UTC.</param>
|
||||
/// <returns>The formatted time as 'HH-MM-SS'.</returns>
|
||||
public static string FormatToBsgTime(this DateTimeOffset dateTimeOffset)
|
||||
{
|
||||
var universalTime = dateTimeOffset.ToUniversalTime();
|
||||
var hour = Pad(universalTime.Hour);
|
||||
var minute = Pad(universalTime.Minute);
|
||||
var second = Pad(universalTime.Second);
|
||||
|
||||
return $"{hour}-{minute}-{second}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Formats the time part of a date as a UTC string.
|
||||
/// </summary>
|
||||
/// <param name="dateTime">The date to format in UTC.</param>
|
||||
/// <returns>The formatted time as 'HH-MM-SS'.</returns>
|
||||
public static string FormatToBsgTime(this DateTime dateTime)
|
||||
{
|
||||
var universalTime = dateTime.ToUniversalTime();
|
||||
var hour = Pad(universalTime.Hour);
|
||||
var minute = Pad(universalTime.Minute);
|
||||
var second = Pad(universalTime.Second);
|
||||
|
||||
return $"{hour}-{minute}-{second}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Formats the date part of a date as a UTC string.
|
||||
/// </summary>
|
||||
/// <param name="dateTimeOffset">The date to format in UTC.</param>
|
||||
/// <returns>The formatted date as 'YYYY-MM-DD'.</returns>
|
||||
public static string FormatToBsgDate(this DateTimeOffset dateTimeOffset)
|
||||
{
|
||||
var universalTime = dateTimeOffset.ToUniversalTime();
|
||||
var day = Pad(universalTime.Day);
|
||||
var month = Pad(universalTime.Month);
|
||||
var year = Pad(universalTime.Year);
|
||||
|
||||
return $"{year}-{month}-{day}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Formats the date part of a date as a UTC string.
|
||||
/// </summary>
|
||||
/// <param name="dateTime">The date to format in UTC.</param>
|
||||
/// <returns>The formatted date as 'YYYY-MM-DD'.</returns>
|
||||
public static string FormatToBsgDate(this DateTime dateTime)
|
||||
{
|
||||
var universalTime = dateTime.ToUniversalTime();
|
||||
var day = Pad(universalTime.Day);
|
||||
var month = Pad(universalTime.Month);
|
||||
var year = Pad(universalTime.Year);
|
||||
|
||||
return $"{year}-{month}-{day}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Pads a number with a leading zero if it is less than 10.
|
||||
/// </summary>
|
||||
/// <param name="number">The number to pad.</param>
|
||||
/// <returns>The padded number as a string.</returns>
|
||||
private static string Pad(int number)
|
||||
{
|
||||
return number.ToString().PadLeft(2, '0');
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get current time formatted to fit BSGs requirement
|
||||
/// </summary>
|
||||
/// <param name="date"> Date to format into bsg style </param>
|
||||
/// <returns> Time formatted in BSG format </returns>
|
||||
public static string GetBsgFormattedWeatherTime(this DateTime date)
|
||||
{
|
||||
return date.FormatToBsgTime().Replace("-", ":").Replace("-", ":");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using SPTarkov.DI.Annotations;
|
||||
using SPTarkov.Server.Core.Extensions;
|
||||
using SPTarkov.Server.Core.Helpers;
|
||||
using SPTarkov.Server.Core.Models.Eft.Weather;
|
||||
using SPTarkov.Server.Core.Models.Enums;
|
||||
@@ -29,7 +30,7 @@ public class WeatherGenerator(
|
||||
public void CalculateGameTime(WeatherData data)
|
||||
{
|
||||
var computedDate = _timeUtil.GetDateTimeNow();
|
||||
var formattedDate = _timeUtil.FormatDate(computedDate);
|
||||
var formattedDate = computedDate.FormatToBsgDate();
|
||||
|
||||
data.Date = formattedDate;
|
||||
data.Time = GetBsgFormattedInRaidTime();
|
||||
@@ -45,19 +46,7 @@ public class WeatherGenerator(
|
||||
/// <returns>Formatted time as String </returns>
|
||||
protected string GetBsgFormattedInRaidTime()
|
||||
{
|
||||
var clientAcceleratedDate = _weatherHelper.GetInRaidTime();
|
||||
|
||||
return GetBsgFormattedTime(clientAcceleratedDate);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get current time formatted to fit BSGs requirement
|
||||
/// </summary>
|
||||
/// <param name="date"> Date to format into bsg style </param>
|
||||
/// <returns> Time formatted in BSG format </returns>
|
||||
protected string GetBsgFormattedTime(DateTime date)
|
||||
{
|
||||
return _timeUtil.FormatTime(date).Replace("-", ":").Replace("-", ":");
|
||||
return _weatherHelper.GetInRaidTime().GetBsgFormattedWeatherTime();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -150,12 +139,12 @@ public class WeatherGenerator(
|
||||
var inRaidTime = timestamp is null
|
||||
? _weatherHelper.GetInRaidTime()
|
||||
: _weatherHelper.GetInRaidTime(timestamp.Value);
|
||||
var normalTime = GetBsgFormattedTime(inRaidTime);
|
||||
var formattedDate = _timeUtil.FormatDate(
|
||||
var normalTime = inRaidTime.GetBsgFormattedWeatherTime();
|
||||
var formattedDate = (
|
||||
timestamp.HasValue
|
||||
? _timeUtil.GetDateTimeFromTimeStamp(timestamp.Value)
|
||||
: DateTime.UtcNow
|
||||
);
|
||||
).FormatToBsgDate();
|
||||
var datetimeBsgFormat = $"{formattedDate} {normalTime}";
|
||||
|
||||
weather.Timestamp = timestamp ?? _timeUtil.GetTimeStamp(); // matches weather.date
|
||||
|
||||
@@ -105,8 +105,8 @@ public class InsuranceService(
|
||||
|
||||
var systemData = new SystemData
|
||||
{
|
||||
Date = _timeUtil.GetDateMailFormat(),
|
||||
Time = _timeUtil.GetTimeMailFormat(),
|
||||
Date = _timeUtil.GetBsgDateMailFormat(),
|
||||
Time = _timeUtil.GetBsgTimeMailFormat(),
|
||||
Location = mapId,
|
||||
};
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using SPTarkov.DI.Annotations;
|
||||
using SPTarkov.Server.Core.Extensions;
|
||||
|
||||
namespace SPTarkov.Server.Core.Utils;
|
||||
|
||||
@@ -7,41 +8,13 @@ public class TimeUtil
|
||||
{
|
||||
public const int OneHourAsSeconds = 3600;
|
||||
|
||||
/// <summary>
|
||||
/// Formats the time part of a date as a UTC string.
|
||||
/// </summary>
|
||||
/// <param name="dateTime">The date to format in UTC.</param>
|
||||
/// <returns>The formatted time as 'HH-MM-SS'.</returns>
|
||||
public string FormatTime(DateTimeOffset dateTime)
|
||||
{
|
||||
var hour = Pad(dateTime.ToUniversalTime().Hour);
|
||||
var minute = Pad(dateTime.ToUniversalTime().Minute);
|
||||
var second = Pad(dateTime.ToUniversalTime().Second);
|
||||
|
||||
return $"{hour}-{minute}-{second}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Formats the date part of a date as a UTC string.
|
||||
/// </summary>
|
||||
/// <param name="dateTime">The date to format in UTC.</param>
|
||||
/// <returns>The formatted date as 'YYYY-MM-DD'.</returns>
|
||||
public string FormatDate(DateTimeOffset dateTime)
|
||||
{
|
||||
var day = Pad(dateTime.ToUniversalTime().Day);
|
||||
var month = Pad(dateTime.ToUniversalTime().Month);
|
||||
var year = Pad(dateTime.ToUniversalTime().Year);
|
||||
|
||||
return $"{year}-{month}-{day}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current date as a formatted UTC string.
|
||||
/// </summary>
|
||||
/// <returns>The current date as 'YYYY-MM-DD'.</returns>
|
||||
public string GetDate()
|
||||
{
|
||||
return FormatDate(DateTimeOffset.UtcNow);
|
||||
return DateTimeOffset.UtcNow.FormatToBsgDate();
|
||||
}
|
||||
|
||||
public DateTime GetDateTimeNow()
|
||||
@@ -55,7 +28,7 @@ public class TimeUtil
|
||||
/// <returns>The current time as 'HH-MM-SS'.</returns>
|
||||
public string GetTime()
|
||||
{
|
||||
return FormatTime(DateTimeOffset.UtcNow);
|
||||
return DateTimeOffset.UtcNow.FormatToBsgTime();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -107,7 +80,7 @@ public class TimeUtil
|
||||
/// </summary>
|
||||
/// <returns>The current time as 'HH:MM' in UTC.</returns>
|
||||
/// GetTimeMailFormat
|
||||
public string GetTimeMailFormat()
|
||||
public string GetBsgTimeMailFormat()
|
||||
{
|
||||
return DateTimeOffset.UtcNow.ToString("HH:mm");
|
||||
}
|
||||
@@ -116,7 +89,7 @@ public class TimeUtil
|
||||
/// Gets the current date in UTC in a format suitable for emails in EFT.
|
||||
/// </summary>
|
||||
/// <returns>The current date as 'DD.MM.YYYY' in UTC.</returns>
|
||||
public string GetDateMailFormat()
|
||||
public string GetBsgDateMailFormat()
|
||||
{
|
||||
return DateTimeOffset.UtcNow.ToString("dd.MM.yyyy");
|
||||
}
|
||||
@@ -171,16 +144,6 @@ public class TimeUtil
|
||||
return ((DateTimeOffset)lastFullHour).ToUnixTimeSeconds();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Pads a number with a leading zero if it is less than 10.
|
||||
/// </summary>
|
||||
/// <param name="number">The number to pad.</param>
|
||||
/// <returns>The padded number as a string.</returns>
|
||||
private static string Pad(int number)
|
||||
{
|
||||
return number.ToString().PadLeft(2, '0');
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Takes a timestamp and converts to its date with Epoch
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user