Как отформатировать DateTime / TimeSpan из строки в C #

Функция
<?php
function generateRandomString($length = 11) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;

}

?>

выше генерирует случайную строку длиной 11 символов.

0
задан Varun Sharma 17 March 2019 в 23:00
поделиться

1 ответ

Код подходит для перечисленных вами требований, вы можете спрятать часть логики, создав метод расширения и используя DateTime.Hour в своем выражении if:

public static class StringExtensions
{
    public static IEnumerable<DateTime> ToDateTimePairs(this string input)
    {
        var dates = input.Split('-').Select(x => DateTime.Parse(x.Trim(), CultureInfo.GetCultureInfo("en-NZ"))).ToList();           

        if (dates[1].Hour < dates[0].Hour)
        {
            dates[1] = dates[1].AddDays(1);
        }

        return dates;
    }
}

Ваш код становится:

string input = "7:00 am - 12:00 am";
var dates = input.ToDateTimePairs();
foreach(var date in dates)
{
    Console.WriteLine(date);
}
Console.ReadKey();

В сторону: Вы также можете добавить несколько шагов проверки в ToDateTimePairs() (у вас должно быть только два действительных объекта DateTime после разделения строки и т. Д.). То, как вы реализуете это, зависит от вас; прямо сейчас, если в строке содержится недопустимая дата, вызов DateTime.Parse() выдаст FormatException - если вы хотите самостоятельно обработать проверку синтаксического анализа, попробуйте использовать DateTime.TryParse() [119 ] вместо.

0
ответ дан trashr0x 17 March 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: