Преобразование строки в 24-часовой формат даты и времени - PullRequest
2 голосов
/ 21 апреля 2020

У меня есть строковые данные, которые поступают в следующей последовательности:

"4:32", "1:08"

Я хочу преобразовать это в 24-часовой формат времени

где "4:32" становится 16: 32

Ответы [ 4 ]

4 голосов
/ 21 апреля 2020

Разберите это на TimeSpan, затем добавьте 12 часов:

var offset = TimeSpan.FromHours(12);
var time = TimeSpan.Parse("4:32").Add(offset);
1 голос
/ 21 апреля 2020

Согласно вашему комментарию, когда вы знаете, что час - это AM / PM, вы можете проанализировать значение с его суффиксом, а затем использовать спецификатор пользовательского формата HH :

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

чтобы преобразовать его в 24-часовой формат.

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

1 голос
/ 21 апреля 2020

Разбор входной строки в TimeSpan, добавление 12 часов, затем форматирование TimeSpan с желаемым форматом строки:

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

// output: "16:32"
0 голосов
/ 21 апреля 2020

В простом случае ваш вопрос предполагает, когда вы заранее знаете, что строка 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 или аналогичные классы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...