C# 将字符串转换为24小时日期时间格式

C# 将字符串转换为24小时日期时间格式,c#,C#,我有以下顺序的字符串数据: “4:32”,“1:08” 我想把这个时间转换成24小时 当“4:32”变成16:32时,将其解析为时间跨度,然后加上12小时: var offset = TimeSpan.FromHours(12); var time = TimeSpan.Parse("4:32").Add(offset); 在这个简单的例子中,您的问题表明,如果您事先知道字符串的格式是12小时h:mm,它指的是PM,而不是AM,那么您可以拆分字符串,解析小时,添加12,然后重新组合它 var

我有以下顺序的字符串数据:

“4:32”,“1:08”

我想把这个时间转换成24小时


当“4:32”变成16:32时,将其解析为时间跨度,然后加上12小时:

var offset = TimeSpan.FromHours(12);
var time = TimeSpan.Parse("4:32").Add(offset);

在这个简单的例子中,您的问题表明,如果您事先知道字符串的格式是12小时
h:mm
,它指的是PM,而不是AM,那么您可以拆分字符串,解析小时,添加12,然后重新组合它

var inputString = "4:32";
var splits = inputString.Split(':');
var hourString = splits[0];
var minuteString = splits[1];
var hour = int.Parse(hourString);
hour = hour + 12;
var outputString = $"{hour}:{minuteString}";

如果要处理更复杂的日期或时间,可能需要使用
DateTime
或类似的类。

将输入字符串解析为
TimeSpan
,添加12小时,然后使用所需的字符串格式格式化
TimeSpan

string input = "4:32";
string output = TimeSpan.Parse(input).Add(TimeSpan.FromHours(12)).ToString("hh\\:mm");

// output: "16:32"

根据您的评论,一旦您知道小时是AM/PM,您就可以用后缀解析该值,然后使用HH自定义格式说明符:

DateTime d = DateTime.Parse("4:32 PM");
Console.WriteLine(d.ToString("HH:mm"));
将其转换为24小时格式


你怎么知道“4:32”对应的是凌晨4点(04:32)还是下午4点(16:32)?我从时间表上得到了这些坏数据,它从一天开始就按升序工作。我只需要了解如何将这些转换为16:32,然后我将添加逻辑,何时在AM和PM之间进行尊重,真的吗?早上4点怎么变成下午4点?我有一个时间表,我知道哪些数据是AM,哪些数据是PM,因为它的升序。将创建两个静态方法,将AM所需的方法和PMAdd“PM”所需的方法格式化在字符串后面,然后转换为
DateTime