C#将12小时时间解析为24小时日期时间

C#将12小时时间解析为24小时日期时间,c#,datetime,datetime-format,C#,Datetime,Datetime Format,我有一份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>()

我有一份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>();
列表日期=新列表();
我如何解析上面的小时数,以便创建一个
列表
,但小时数采用24小时格式


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

好吧,如果字符串数据已排序(这是一个很大的if),那么您可以尝试使用此代码

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;

    }
}
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;
列表日期=新列表();
字符串currentAMPM=“AM”;
foreach(字符串s部分)
{
日期时间温度;
if(DateTime.TryParse(s+“”+currentAMPM,输出温度))
{
如果(温度<上次输入)
{
currentAMPM=(currentAMPM=“AM”?“PM”:“AM”);
DateTime.TryParse(s+“”+currentAMPM,输出温度);
}
日期。添加(临时);
lastInput=温度;
}
}

为什么在将
am/pm
信息解析为
DateTime
之前,您不能自己添加
am/pm
信息?否则就无法区分您的数据是否有序?第一个字符串是唯一一个与下一个字符串间隔30分钟的字符串吗?你不能,因为你不知道12小时的时间是上午还是下午,除非你有一个已知的(上午/下午)起点和规则increments@Steve:数据已排序。是的,第一个字符串是唯一一个间隔为30分钟的字符串,实际上可以是01到59之间的任何值,但它是唯一一个不是00的字符串。@SriramSakthivel:正如您看到的其他注释一样,我知道自己不可能,因为缺少am/pm信息,因此,我问这个问题,因为也许有一个解决方案,我不知道。。。