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

时间:2020-04-21 17:32:57

标签: c#

我具有按以下顺序排列的字符串数据:

“ 4:32”,“ 1:08”

我想将其转换为24小时制

其中“ 4:32”变为16:32

4 个答案:

答案 0 :(得分:4)

将其解析为TimeSpan,然后添加12小时:

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

答案 1 :(得分:1)

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

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

// output: "16:32"

答案 2 :(得分:1)

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

DateTime d = DateTime.Parse("4:32 PM");
Console.WriteLine(d.ToString("HH:mm"));

将其转换为24h格式。

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings#HH_Specifier

答案 3 :(得分:-1)

在一个简单的情况下,您的问题提示,您事先知道该字符串为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或类似的类。