<?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 символов.
Код подходит для перечисленных вами требований, вы можете спрятать часть логики, создав метод расширения и используя 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 ] вместо.