收集和存储时间和日期的最佳方式

时间:2014-07-18 09:40:21

标签: c# .net

这个问题可能有点模棱两可,所以我会解释我的目标和我之前的实施。我正在寻找有关如何改进实施的建议。

我的应用程序需要一定的日期和时间(小时和分钟)才能在程序后期用作标准。

日期和时间是可变的,取决于用户是否是特定组的成员。

我之前的实现是获取所选组的名称,然后转到Web服务器并下载包含日期和时间的相应文件。每个组都有一个文件。

文本文件的格式为:

  

日,星期,日etc..HH,HH,MM,MM

然后将其读入两个单独的阵列,其中位置是硬编码的。例如。指数0,1,2表示天数,3,4表示小时数,5,6表示分钟数。

这种方法也意味着我需要一个更长的数组,这个数组的天数比另一个更多。

显然,这一切都非常低效,而且代码不是非常可重用或可扩展的。我必须改变是否引入了一个新组,并且文本文件中的数据更少。

编辑 - 由于问题的模糊性,我已经包含了代码:

此方法在CollectQualifyingTimes的fileName参数中传递组名。字符串看起来像gtstimes.txt或gtsdates.txt或gectimes.txt或gecdates.txt

internal static class DownloadQualifyingTimes
 {
    //TimeDate Arrays
    public static readonly List<string> QDaysList = new List<string>();
    public static readonly List<int> QTimesList = new List<int>();

    private static StreamReader _reader;
    private static string _line;
    private static string _file;

    /// <summary>
    ///     Collects the Times
    /// </summary>
    public static void CollectQualifyingTimes(string fileName)
    {
        Logger.Debug("About to download the " + fileName + " Qualifying Times and Dates");

        FileDownload.DownloadOnlineFile(fileName);
        OpenQualifyingFile(fileName);
    }

    /// <summary>
    ///     Open the qualifying file and read the values.
    /// </summary>
    /// <returns></returns>
    private static void OpenQualifyingFile(string fileName)
    {
        try
        {
            _file = Path + "\\" + fileName;

            using (_reader = new StreamReader(_file))
            {
                while ((_line = _reader.ReadLine()) != null)
                {
                    if (fileName.Contains("Times"))
                    {
                        QTimesList.Add(Convert.ToInt16(_line));
                        Logger.Debug("Times " + _line);
                    }
                    else
                    {
                        QDaysList.Add(_line);
                        Logger.Debug("Days " + _line);
                    }
                }
            }
        }
        catch (WebException exception)
        {
            Logger.Error(exception);
        }
    }
}



//The method that calls the Downloading class looks like this:
/// <summary>
    /// 
    /// </summary>
    /// <param name="selectedLeague"></param>
    /// <returns></returns>
    public static bool QualificationTimeCheck(string selectedLeague)
    {
        var currentUtcTime = DateTime.UtcNow;
        //Day check regardless of league
        if    (DownloadQualifyingTimes.QDaysList.Contains(currentUtcTime.DayOfWeek.ToString()))
        {
            Logger.Debug("Qualifying day condition meet");
            if (selectedLeague.IsOneOf("GTS", "CAT"))
            {
                Logger.Debug("GTS or CAT qualifying logic");
                if (currentUtcTime.Hour ==
                    DownloadQualifyingTimes.QTimesList[0] ||
                    currentUtcTime.Hour ==
                    DownloadQualifyingTimes.QTimesList[1])
                {
                    Logger.Debug("Qualifying hour condition meet");
                    if (((currentUtcTime.Minute > DownloadQualifyingTimes.QTimesList[2])
                        && (currentUtcTime.Minute < DownloadQualifyingTimes.QTimesList[3])) || SessionObject.LastLapStartedMinute <= DownloadQualifyingTimes.QTimesList[3])
                    {
                        Logger.Debug("Qualifying minute condition meet");
                        return true;
                    }

我希望这能说明问题的本质和问题。

您能想到实施此流程的更好方法吗?如果您需要更多相关信息,请不要犹豫。

编辑 - 根据第一条评论建议结束实施列表。

0 个答案:

没有答案