d70d81ebdf
OneDrive Backup
54 lines
1.7 KiB
C#
54 lines
1.7 KiB
C#
using System.Collections;
|
|
using System.Text;
|
|
|
|
namespace hassio_onedrive_backup
|
|
{
|
|
public static class TimeRangeHelper
|
|
{
|
|
public static BitArray GetAllowedHours(string? allowedHoursExpression)
|
|
{
|
|
var allowedHours = new BitArray(24);
|
|
if (string.IsNullOrWhiteSpace(allowedHoursExpression))
|
|
{
|
|
allowedHours.SetAll(true);
|
|
return allowedHours;
|
|
}
|
|
|
|
var sections = allowedHoursExpression.Split(',', StringSplitOptions.RemoveEmptyEntries);
|
|
foreach (string section in sections)
|
|
{
|
|
string fromStr;
|
|
string toStr;
|
|
|
|
fromStr = section.StartsWith('-') ? "0" : section.Split('-').FirstOrDefault(s => string.IsNullOrWhiteSpace(s) == false, "0");
|
|
toStr = section.EndsWith('-') ? "23" : section.Split('-').LastOrDefault(s => string.IsNullOrWhiteSpace(s) == false, "23");
|
|
|
|
int from = int.Parse(fromStr);
|
|
int to = int.Parse(toStr);
|
|
|
|
for (int i = from; i <= to; i++)
|
|
{
|
|
allowedHours.Set(i, true);
|
|
}
|
|
}
|
|
|
|
return allowedHours;
|
|
}
|
|
|
|
public static string ToAllowedHoursText(this BitArray bitArray)
|
|
{
|
|
var sb = new StringBuilder();
|
|
for (int i=0; i< bitArray.Length; i++)
|
|
{
|
|
if (bitArray[i])
|
|
{
|
|
sb.Append($"{i},");
|
|
}
|
|
}
|
|
|
|
sb.Remove(sb.Length - 1, 1);
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
}
|