FM/Assets/Scripts/Base/Tool/PersistentDateChecker.cs

117 lines
3.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.IO;
using UnityEngine;
public static class PersistentDateChecker
{
// 记录上一次检查的日期
private static DateTime _lastCheckDate;
// 存储日期的文件路径(可根据需要修改)
private static readonly string _dateFilePath;
static PersistentDateChecker()
{
_dateFilePath = Path.Combine(Application.streamingAssetsPath, "DateCheck.txt");
// 程序启动时读取上次保存的日期
LoadLastCheckDate();
}
/// <summary>
/// 从文件加载上次检查的日期
/// </summary>
private static void LoadLastCheckDate()
{
try
{
if (File.Exists(_dateFilePath))
{
string dateString = File.ReadAllText(_dateFilePath).Trim();
// 尝试解析日期(只保留年月日)
if (DateTime.TryParse(dateString, out DateTime parsedDate))
{
_lastCheckDate = parsedDate.Date;
return;
}
}
}
catch (Exception ex)
{
UnityEngine.Debug.Log($"加载日期文件失败: {ex.Message}");
}
// 如果文件不存在或解析失败,初始化为本天日期
_lastCheckDate = DateTime.Now.Date;
// 保存初始化的日期
SaveLastCheckDate();
}
/// <summary>
/// 将当前检查日期保存到文件
/// </summary>
private static void SaveLastCheckDate()
{
try
{
// 只保存日期部分格式yyyy-MM-dd
File.WriteAllText(_dateFilePath, _lastCheckDate.ToString("yyyy-MM-dd"));
}
catch (Exception ex)
{
UnityEngine.Debug.Log($"保存日期文件失败: {ex.Message}");
}
}
/// <summary>
/// 判断当前是否为新的一天(相对于上一次记录的日期)
/// </summary>
/// <returns>如果是新的一天则返回true否则返回false</returns>
public static bool IsNewDay()
{
DateTime currentDate = DateTime.Now.Date;
bool isNew = currentDate > _lastCheckDate;
if (isNew)
{
_lastCheckDate = currentDate;
SaveLastCheckDate(); // 更新并保存新日期
}
return isNew;
}
/// <summary>
/// 强制重置日期记录(用于测试或特殊场景)
/// </summary>
public static void Reset()
{
_lastCheckDate = DateTime.MinValue.Date;
SaveLastCheckDate();
}
private static string orderPath = Path.Combine(Application.streamingAssetsPath, "Order");
public static void SaveOrderID(string orderMsg)
{
IsNewDay();
string dateString = File.ReadAllText(_dateFilePath).Trim();
string path = Path.Combine(orderPath, $"OrderID{dateString}.txt");
if (!Directory.Exists(orderPath))
{
Directory.CreateDirectory(orderPath);
}
if (!File.Exists(path))
{
File.Create(path).Close();
}
var context = File.ReadAllText(path);
if (string.IsNullOrEmpty(context))
context = $"{orderMsg}";
else
context += $"\n{orderMsg}";
File.WriteAllText(path, context);
}
}