C# 将 12 小时时间解析为 datetime 24 小时

C# parse 12 hours time into datetime 24 hours

我有一个 12 小时格式的小时列表:

2:30, 3:00, 4:00, 5:00, 6:00, 7:00, 8:00, 9:00, 10:00, 11:00, 12:00, 
1:00, 2:00, 3:00, 4:00, 5:00, 6:00, 7:00, 8:00, 9:00, 10:00, 11:00, 
12:00, 1:00, 2:00

第一个值2:30是在晚上。

如果我创建一个

List<DateTime> dates = new List<DateTime>();

我如何解析上面的小时数以便创建一个 List<DateTime> 但小时数为 24 小时制?

问题是缺少小时 am/pm 信息,所以我不知道如何将它们解析为 24 小时,否则会重复。

那么,如果您的字符串数据是有序的(这是一个很大的假设),您可以尝试使用此代码

string data = "2:30, 3:00, 4:00, 5:00, 6:00, 7:00, 8:00, 9:00, 10:00, 11:00, 12:00, 1:00, 2:00, 3:00, 4:00, 5:00, 6:00, 7:00, 8:00, 9:00, 10:00, 11:00, 12:00, 1:00, 2:00";
string[] parts = data.Split(',');

DateTime lastInput = DateTime.MinValue;
List<DateTime> dates = new List<DateTime>();
string currentAMPM = "AM";
foreach(string s in parts)
{
    DateTime temp;

    if(DateTime.TryParse(s + " " + currentAMPM, out temp))
    {
        if(temp < lastInput)
        {
            currentAMPM = (currentAMPM == "AM" ? "PM" : "AM");
            DateTime.TryParse(s + " " + currentAMPM, out temp);
        }
        dates.Add(temp);
        lastInput = temp;

    }
}