Как получить час и минуту с (как мне кажется,) кодом c# - PullRequest
0 голосов
/ 16 января 2020

Мне было поручено создать некоторые правила маршрутизации вызовов, основанные на времени суток. 3CX (система, которую мы используем) предоставляет документацию о том, как это сделать, и я работаю до определенной степени. Однако, чтобы получить время, они предоставляют этот C# фрагмент, который является методом в конструкторе потока вызовов:

return DateTime.Now.Hour < 9;

Это возвращает истину или ложь, и условие читает этот логический вывод и определяет, куда отправлять вызовы на основе этого вывода.

Мне нужно отредактировать этот фрагмент кода, чтобы получить логический вывод в зависимости от того, находится ли он между 8:00 и 16: 30.

Я не разработчик - я баловался Python возрастом go, но это мне здесь не помогает.

Я даже не уверен, что это правильный C# код для начала, но он делает работать как есть.

Строка в конфигурации выглядит следующим образом:

<ns0:ExecuteCSharpCodeComponent ReturnsValue="True" Code="return DateTime.Now.Hour &lt; 9;" ParameterList="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;ArrayOfScriptParameter xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; /&gt;" Description="IsTime0to9" MethodName="IsTime0to9" DebugModeActive="False" x:Name="timeFrom0To9" />

Эта строка конфигурации проверяет, находится ли час между 9 и 12:

<ns0:ExecuteCSharpCodeComponent ReturnsValue="True" Code="return DateTime.Now.Hour &gt;= 9 &amp;&amp; DateTime.Now.Hour &lt; 12;" ParameterList="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;ArrayOfScriptParameter xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; /&gt;" MethodName="IsTime9to12" DebugModeActive="False" x:Name="timeFrom9To12" />

Любой вклад будет приветствоваться.

Спасибо

1 Ответ

0 голосов
/ 16 января 2020

Вы действительно не можете сделать это, сравнивая количество минут и часов, потому что в конце вы не можете написать действительное условие, если вы действительно не хотите его разветвить, что не так эффективно или приятно.

return DateTime.Now.Hour >= 8 && (DateTime.Now.Hour <= 16 && DateTime.Now.Minute <= 30)

Это не будет выполняться каждый раз, когда у вас есть более 30 минут. Я бы порекомендовал использовать TimeSpan, так как вы можете позвонить для текущего времени дня, позвонив по номеру DateTime.Now.TimeOfDay .

TimeSpan startTime = new TimeSpan(8, 0, 0); //sets the 8:00 time
TimeSpan endTime = new TimeSpan(16, 30, 0); //sets the 16:30 time

return startTime <= DateTime.Now.TimeOfDay && endTime >= DateTime.Now.TimeOfDay;

Или вы можете просто переписать его в одну строку

return new TimeSpan(8, 0, 0) <= DateTime.Now.TimeOfDay && new TimeSpan(16, 30, 0) >= DateTime.Now.TimeOfDay;
...