Подскажите, можно ли во времени, например: 01:00:05 типа DateTime
или TimeSpan
заменить двоеточия на сокращения ч, мин или сек и при этом убрать нули до первого значащего числа?
Возможно ли это сделать функциями .net, дабы не писать свой парсер?
Вот что это означает: например у нас есть строка 00:01:00, на экране увидим 1m00s. Я бы хотел чтобы было 1мин00сек
Вот пример как вместо двоеточия использовать другие символы h, m или s:
TimeSpan ts = new TimeSpan(00, 01, 00);
string s = ts.ToString(@"d\d\h\hmm\mss\s").TrimStart(' ', 'd', 'h', 'm', 's', '0');
вроде должно быть все понятно по коду
var a = DateTime.Now.ToString("yyyy лет MM месяцев dd дней hh часов mm минут ss секунд");
Результат:
2018 лет 12 месяцев 20 дней 04 часов 51 минут 21 секунд
.
дальше просто логика обрезания начала строки.
То есть тебе нужно что-то вроде метода:
public static class DateTimeExtension
{
public static string ToCustomDateStr(this DateTime dt)
{
string str;
if (dt.Hour != 0)
{
str = dt.ToString("Hчас mмин sсек");
}
else
{
str = dt.ToString("mмин sсек");
}
return str;
}
}
и использование:
var a = DateTime.Now.ToCustomDateStr();
результат будет...
17час 56мин 36сек
или
56мин 36сек
или
6час 56мин 36сек
Если брать за основу, что начальная строка не содержит ошибок, то:
var sep = new [] {"ч","мин","сек"};
var t = string.Join(" ", "03:01:00"
.Split(':')
.Select((s, i) => s == "00" ? string.Empty : $"{int.Parse(s)}{sep[i]}")
.Where(s => !string.IsNullOrEmpty(s)));
Для типа TimeSpan придумал вот такой конвертер (если не хочется использовать DateTime. В моём случае работать с DateTime мне было не удобно):
public static string ToCustomDateStr(TimeSpan ts)
{
string str;
string parseString = ts.ToString(@"d\.h\:m\:s").TrimStart(' ', 'd', 'h', 'm', 's', '0', '.', ':');
string[] duration = parseString.Split('.', ':');
if (duration.Length == 1)
str = ts.Seconds.ToString() + "sec";
else if (duration.Length == 2)
str = ts.Minutes.ToString() + "min " + ts.Seconds.ToString() + "sec";
else if (duration.Length == 3)
str = ts.Hours.ToString() + "h " + ts.Minutes.ToString() + "min " + ts.Seconds.ToString() + "sec";
else if (duration.Length == 4)
str = ts.Days.ToString() + "d " + ts.Hours.ToString() + "h " + ts.Minutes.ToString() + "min " + ts.Seconds.ToString() + "sec";
else
str = string.Empty;
return str;
}
Я делаю строку вида день.часы:минуты:секунды
, затем разбиваю её и формирую новую в зависимости от того, сколько данных получилось после разбиения.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вопрос заключается в следующемСоздаю приложение на xamarin forms, используя паттерн mvvm
надо сделать ожидание пока элемент прогрузится но выдает ошибку на drManage()
У меня есть массив int [] lvl, который можно менять количество элементов и значения через Inspector в ЮнитиНужно создать второй массив int[] keys, Length которого...