2015-04-26 143 views
0

我有个小时,其是在12小时内格式的列表:C#分析时间12小时到日期时间24小时

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>但在24小时格式的时间?

事情是时间丢失am/pm信息,所以我不知道如何解析它们为24小时,否则将是重复的。

+0

尝试你为什么不能解析它像以前一样自己添加'AM/pm'信息'DateTime'?否则无法区分 – BrokenGlass

+0

您的数据是否已订购?第一个字符串是唯一一个与下一个字符串间隔30分钟的字符串吗? – Steve

+0

您不能,因为您不知道12小时时间是上午还是下午,除非您有已知的(AM/PM)起始点和常规增量 – Alex

回答

2

好吧,那么如果你的字符串数据进行排序(这是一个很大的如果)你可以用这个代码

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; 

    } 
} 
相关问题