Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 DateTime и TimeSpan ToString  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4564
Приветствую.
Кто знает почем настраиваемые строки форматов имеют разные форматы?
https://docs.microsoft.com/ru-ru/dotnet/standard/base-types/custom-date-and-time-format-strings
https://docs.microsoft.com/ru-ru/dotnet/standard/base-types/custom-timespan-format-strings
20 сен 18, 10:29    [21680396]     Ответить | Цитировать Сообщить модератору
 Re: DateTime и TimeSpan ToString  [new]
hVostt
Member

Откуда:
Сообщений: 14999
ЕвгенийВ,

полагаю, потому что разный смысл у них совершенно, DateTime выражает момент во времени, а TimeSpan длительность, отрезок времени.
20 сен 18, 10:41    [21680421]     Ответить | Цитировать Сообщить модератору
 Re: DateTime и TimeSpan ToString  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3056
hVostt,

По сути и там, и там Long =) фактически сравнить их можно, По уму, автору надо сделать IFormatProvider и использовать его для преобразования в нужный строковый формат. Но если это делается чисто для сравнения, это конечно неверный подход.
20 сен 18, 11:15    [21680487]     Ответить | Цитировать Сообщить модератору
 Re: DateTime и TimeSpan ToString  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4564
hVostt,

Я про то, что бы из первого получить время в строке, надо "hh:mm:ss", а у второго "hh\:mm\:ss".
Почему не унифицировали?
20 сен 18, 11:17    [21680494]     Ответить | Цитировать Сообщить модератору
 Re: DateTime и TimeSpan ToString  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19555
ЕвгенийВ
hVostt,

Я про то, что бы из первого получить время в строке, надо "hh:mm:ss", а у второго "hh\:mm\:ss".
Почему не унифицировали?
Вообще-то ты вполне можешь использовать "hh\:mm\:ss" в обоих случаях, и будет тебе счастье.
Но так-то ты действительно пытаешься сравнить паяльник с зеброй, неуместно
20 сен 18, 11:51    [21680573]     Ответить | Цитировать Сообщить модератору
 Re: DateTime и TimeSpan ToString  [new]
hVostt
Member

Откуда:
Сообщений: 14999
ЕвгенийВ
Я про то, что бы из первого получить время в строке, надо "hh:mm:ss", а у второго "hh\:mm\:ss".
Почему не унифицировали?


потому что в первом случае : это не символ ':', это подстановочный символ, который может быть подменён на другой в зависимости от настроек даты/времени текущей локали. а для TimeSpan по существу нет никаких настроек даты/времени, поэтому символ сам указываешь, какой надо. именно он и будет в строке.
20 сен 18, 11:55    [21680580]     Ответить | Цитировать Сообщить модератору
 Re: DateTime и TimeSpan ToString  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2358
hVostt
потому что в первом случае : это не символ ':', это подстановочный символ, который может быть подменён на другой в зависимости от настроек даты/времени текущей локали. а для TimeSpan по существу нет никаких настроек даты/времени, поэтому символ сам указываешь, какой надо. именно он и будет в строке.

Да, случай ':' особый для DateTime. Но все же, если посмотреть исходники

У DateTime:

default:
// NOTENOTE : we can remove this rule if we enforce the enforced quote
// character rule.
// That is, if we ask everyone to use single quote or double quote to insert characters,
// then we can remove this default block.
result.Append(ch);
tokenLen = 1;
break;
У TimeSpan:

default:
throw new FormatException(Environment.GetResourceString("Format_InvalidString"));

то возникает резонный вопрос - а не получится ли в будущем, что для любого "неособого" символа прийдется добавлять излишние символы в обоих случаях - '\' в случае TimeSpan и "single quote or double quote" в случае DateTime?
От мокрософтов всего можно ожидать :)
20 сен 18, 12:23    [21680615]     Ответить | Цитировать Сообщить модератору
 Re: DateTime и TimeSpan ToString  [new]
hVostt
Member

Откуда:
Сообщений: 14999
LR,

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

посмотри, например, SmartFormat.NET
20 сен 18, 13:39    [21680764]     Ответить | Цитировать Сообщить модератору
 Re: DateTime и TimeSpan ToString  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2358
hVostt,

Да я просто неудачно попытался так пошутить)) На самом деле, очевидно же, что оптимальным бы было для TimeSpan сделать так же как у DateTime, т.е.
default:
                        result.Append(ch);
                        tokenLen = 1;
                        break;

и некая "унификация" и избавление от излишества спецсимвола '\'.
20 сен 18, 21:17    [21681388]     Ответить | Цитировать Сообщить модератору
 Re: DateTime и TimeSpan ToString  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145487
LR
и некая "унификация" и избавление от излишества спецсимвола '\'.

Если багу нельзя исправить, то она описывается как документированная особенность
20 сен 18, 22:13    [21681446]     Ответить | Цитировать Сообщить модератору
 Re: DateTime и TimeSpan ToString  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2358
Cat2
Если багу нельзя исправить, то она описывается как документированная особенность

Ага, точно!)
20 сен 18, 22:20    [21681451]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить