using System;
namespace BetterGenshinImpact.GameTask.UseRedeemCode;
public class GamePreviewLiveDateCalculator
{
private static readonly DateTime StartDate = new DateTime(2025, 10, 10);
private const int IntervalDays = 42;
private const double ValidDays = 3.5;
///
/// 计算当前日期是否是前瞻日期
///
/// 如果是前瞻日期,返回 true;否则返回 false。
public static bool IsPreviewDate(DateTime date)
{
TimeSpan difference = date - StartDate;
return difference.Days >= 0 && difference.Days % IntervalDays == 0;
}
public static void TestIsPreviewDate()
{
IsPreviewDate(new DateTime(2025, 11, 21));
}
public bool TestTodayIsPreviewDate()
{
return IsPreviewDate(DateTime.Today);
}
///
/// 计算当前时间是否在从前瞻日期开始的2.5天范围内。
///
/// 如果在范围内,返回 true;否则返回 false。
public static bool IsWithinPreviewRange(DateTime now)
{
TimeSpan difference = now.Date - StartDate;
int daysSinceStart = difference.Days;
if (daysSinceStart < 0)
{
return false;
}
int intervalCount = daysSinceStart / IntervalDays;
DateTime lastPreviewDate = StartDate.AddDays(intervalCount * IntervalDays);
TimeSpan timeSinceLastPreview = now - lastPreviewDate;
return timeSinceLastPreview.TotalDays >= 0 && timeSinceLastPreview.TotalDays <= ValidDays;
}
}