Timespan структура

The General Long («G») Format Specifier

The «G» TimeSpan format specifier returns the string representation of a TimeSpan value in a long form that always includes both days and fractional seconds. The string that results from the «G» standard format specifier has the following form:

d:hh:mm:ss.fffffff

Elements in square brackets () are optional. The colon (:) is a literal symbol. The following table describes the remaining elements.

Element Description
An optional negative sign, which indicates a negative time interval.
d The number of days, with no leading zeros.
hh The number of hours, which ranges from «00» to «23».
mm The number of minutes, which ranges from «00» to «59».
ss The number of seconds, which ranges from «00» to «59».
. The fractional seconds separator. It is equivalent to the specified culture’s NumberDecimalSeparator property without user overrides.
fffffff The fractional seconds.

Like the «G» format specifier, the «g» format specifier is localized. Its fractional seconds separator is based on either the current culture or a specified culture’s NumberDecimalSeparator property.

The following example instantiates two TimeSpan objects, uses them to perform arithmetic operations, and displays the result. In each case, it uses composite formatting to display the TimeSpan value by using the «G» format specifier. In addition, it formats the TimeSpan value by using the formatting conventions of the current system culture (which, in this case, is English — United States or en-US) and the French — France (fr-FR) culture.

The Constant («c») Format Specifier

The «c» format specifier returns the string representation of a TimeSpan value in the following form:

hh:mm:ss

Elements in square brackets () are optional. The period (.) and colon (:) are literal symbols. The following table describes the remaining elements.

Element Description
An optional negative sign, which indicates a negative time interval.
d The optional number of days, with no leading zeros.
hh The number of hours, which ranges from «00» to «23».
mm The number of minutes, which ranges from «00» to «59».
ss The number of seconds, which ranges from «0» to «59».
fffffff The optional fractional portion of a second. Its value can range from «0000001» (one tick, or one ten-millionth of a second) to «9999999» (9,999,999 ten-millionths of a second, or one second less one tick).

Unlike the «g» and «G» format specifiers, the «c» format specifier is not culture-sensitive. It produces the string representation of a TimeSpan value that is invariant and that’s common to versions prior to .NET Framework 4. «c» is the default TimeSpan format string; the method formats a time interval value by using the «c» format string.

Note

TimeSpan also supports the «t» and «T» standard format strings, which are identical in behavior to the «c» standard format string.

The following example instantiates two TimeSpan objects, uses them to perform arithmetic operations, and displays the result. In each case, it uses composite formatting to display the TimeSpan value by using the «c» format specifier.

The General Short («g») Format Specifier

The «g» TimeSpan format specifier returns the string representation of a TimeSpan value in a compact form by including only the elements that are necessary. It has the following form:

h:mm:ss

Elements in square brackets () are optional. The colon (:) is a literal symbol. The following table describes the remaining elements.

Element Description
An optional negative sign, which indicates a negative time interval.
d The optional number of days, with no leading zeros.
h The number of hours, which ranges from «0» to «23», with no leading zeros.
mm The number of minutes, which ranges from «00» to «59»..
ss The number of seconds, which ranges from «00» to «59»..
. The fractional seconds separator. It is equivalent to the specified culture’s NumberDecimalSeparator property without user overrides.
FFFFFFF The fractional seconds. As few digits as possible are displayed.

Like the «G» format specifier, the «g» format specifier is localized. Its fractional seconds separator is based on either the current culture or a specified culture’s NumberDecimalSeparator property.

The following example instantiates two TimeSpan objects, uses them to perform arithmetic operations, and displays the result. In each case, it uses composite formatting to display the TimeSpan value by using the «g» format specifier. In addition, it formats the TimeSpan value by using the formatting conventions of the current system culture (which, in this case, is English — United States or en-US) and the French — France (fr-FR) culture.

Operators

Adds two specified TimeSpan instances.

Returns a new TimeSpan object which value is the result of division of instance and the specified .

Returns a new Double value which is the result of division of instance and the specified .

Indicates whether two TimeSpan instances are equal.

Indicates whether a specified TimeSpan is greater than another specified TimeSpan.

Indicates whether a specified TimeSpan is greater than or equal to another specified TimeSpan.

Indicates whether two TimeSpan instances are not equal.

Indicates whether a specified TimeSpan is less than another specified TimeSpan.

Indicates whether a specified TimeSpan is less than or equal to another specified TimeSpan.

Returns a new TimeSpan object whose value is the result of multiplying the specified and the specified instance.

Returns a new TimeSpan object whose value is the result of multiplying the specified instance and the specified .

Subtracts a specified TimeSpan from another specified TimeSpan.

Returns a TimeSpan whose value is the negated value of the specified instance.

Returns the specified instance of TimeSpan.

10 ответов

Лучший ответ

В .NET 3.5 вместо этого вы можете использовать MultiBinding

Обновить Чтобы ответить на комментарии.

Чтобы убедиться, что вы выводите 2 цифры, даже если часы или минуты равны 0–9, вы можете использовать {0:00} вместо {0}. Это обеспечит вывод времени 12:01 на 12:01 вместо 12: 1. Если вы хотите выводить 01:01 как 1:01, используйте

А условное форматирование можно использовать для удаления отрицательного знака на несколько минут. Вместо {1:00} мы можем использовать {1: 00; 00}

94

Fredrik Hedblad
3 Июл 2015 в 12:36

Строка формата предназначена для работы с , а не .

Вместо этого вы можете изменить свой код, чтобы он работал с . Ваш xaml в порядке:

Обновить

А из .Net 4 отформатируйте следующим образом:

148

Tim Lloyd
30 Дек 2010 в 14:28

Просто чтобы добавить в пул, я успешно использую эту привязку для отображения TimeSpan в производственном приложении WPF:

Принял несколько попыток исправить обратную косую черту :)

47

Cygon
8 Дек 2011 в 11:35

должен иметь форму строка формата. В этом случае это будет выглядеть так:

Примечание. Если вы хотите отобразить общее количество часов и минут, а временной интервал превышает 24 часа, используйте ваш подход с оговоркой: Вот обходной путь.

21

Peter Lillevold
16 Сен 2014 в 21:58

На привязки Multi нужно обращать внимание, начиная с .NET 4. Ниже приведен краткий обзор, протестированный с помощью .NET 4.6:

Ниже приведен краткий обзор, протестированный с помощью .NET 4.6:

Обычная привязка:

Мульти-переплет:

Или вы можете использовать » вместо ‘ в мультисвязке:

Примечание: использование StringFormat = «{} {0: hh \: \: mm \: ss} -> {1: hh \: mm \: ss}» не будет работать на MultiBinding это приведет к пустому результату.

19

juFo
22 Окт 2015 в 09:46

Я знаю, что это старый вопрос, но меня удивляет, что никто не предложил этот простой , который будет работать напрямую с :

13

Sheridan
12 Окт 2013 в 01:38

WPF в .NET 4 теперь имеет временной интервал из строк http://msdn.microsoft.com /en-us/library/ee372286.aspx

Я использую следующие

12

Ira
27 Дек 2011 в 12:14

Если вы хотите использовать StringFormat в метке, которая использует свойство Content, вы можете использовать ContentStringFormat для форматирования своего временного интервала:

12

mcflux101
23 Май 2016 в 08:33

TimeSpan StringFormat с миллисекундами:

5

Stepan Ivanenko
2 Мар 2020 в 09:05

Решения Mi были такими:

(продублируйте элемент 0 столько раз, сколько вам нужно)

Boris Sclauzero
19 Янв 2021 в 11:23

Определение

Пространство имен:
System
Сборка:
System.Runtime.dll
Сборки:
mscorlib.dll, System.Runtime.dll
Сборка:
mscorlib.dll
Сборка:
netstandard.dll

Важно!

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Представляет интервал времени.

В этой статье

Наследование

Object
ValueType
TimeSpan

Атрибуты

SerializableAttribute

ComVisibleAttribute

Реализации

IComparable

IComparable<TimeSpan>

IEquatable<TimeSpan>

IFormattable

ISpanFormattable

Как форматировать строки в C# с помощью String.Format

Мы уже рассказывали про базовые операции, которые позволяют работать со строками в C#. Здесь мы подробнее рассмотрим форматирование строк.

Форматировать строки в C# помогает метод . Он преобразует значения объектов в строки и затем вставляет их в результирующую строку.

Пример форматирования с помощью :

string newString;
newString = string.Format("There are {0} cats in my {1} and no {2}", 2, "house", "dogs"); // There are 2 cats in my house and no dogs

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

Описатели форматов

Для представления чисел в C# используются следующие описатели:

Описатель формата Описание
“C” или “c” Валюта
“D” или “d” Целое число
“E” или “e” Экспоненциальный вид
“F” или “f” Фиксированная запятая
“G” или “g” Наиболее компактная запись из двух вариантов: “E” и “F”
“P” или “p” Проценты
“X” или “x” Шестнадцатеричное представление числа
Любой другой символ Исключение

Мы же здесь пройдёмся по примерам использования, чтобы вы могли попробовать форматирование на практике.

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

Валюта

Для форматирования валюты используется описатель “C” или “c”’. Знак валюты зависит от того, какая локаль установлена. Например, если это en-US, то в строке будет отображаться знак доллара, а если fr-FR, то знак евро.

После описателя можно указать, сколько знаков требуется отобразить после запятой.

Пример:

double number = 35.8;
string str = string.Format("{0:C2}", number); // $35.80
string str2 = string.Format("{0:C1}", number); // $35.8

Целые числа

Для форматирования целых чисел используется описатель ‘D’ или ‘d’.

Пример:

int intNum = 33;
str = string.Format("{0:d}",intNum); // 33
str = string.Format("{0:d4}", intNum); // 0033

После описателя можно явно указать, сколько символов должно отобразиться при выводе. Если в числе нет столько знаков, то в начале будут добавлены нули.

Дробные числа

Для форматирования дробных чисел используется описатели “E”, “F” или “G”:

Примеры:

double dNum = 12.4567;
str = string.Format("{0:E}", dNum); // 1,245670E+001
str = string.Format("{0:E2}", dNum); // 1,25E+001
str = string.Format("{0:F3}", dNum); // 12,457
str = string.Format("{0:G}", dNum); // 12,4567

После описателя указывается, сколько знаков должно быть после разделителя (запятой в русской локали). Если количество знаков после запятой меньше, чем у числа, то число автоматически округляется в соответствии с правилами.

Проценты

Для форматирования процентов используется описатель ‘P’ или ‘p’.

Пример:

double percent = 0.45221;
str = string.Format("{0:P}", percent); // 45,22%
str = string.Format("{0:P1}", percent); // 45,2%

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

Настраиваемые форматы

C# предоставляет возможность настраивать формат вывода. Например, в качестве заместителя цифры используется символ #. С его помощью удобно представлять число как номер телефона:

long phone = 12345678910;
str = string.Format("{0:+#(###)###-##-##}", phone); // +1(234)567-89-10

Настраиваемых числовых форматов тоже много. Например, знак “.” — это разделитель. С его помощью определяется разделитель целой и дробной частей в результирующей строке. Знак “%” — заместитель процента. Есть также настраиваемые форматы даты и времени.

Fields

MaxValue

Represents the maximum TimeSpan value. This field is read-only.

MinValue

Represents the minimum TimeSpan value. This field is read-only.

TicksPerDay

Represents the number of ticks in 1 day. This field is constant.

TicksPerHour

Represents the number of ticks in 1 hour. This field is constant.

TicksPerMillisecond

Represents the number of ticks in 1 millisecond. This field is constant.

TicksPerMinute

Represents the number of ticks in 1 minute. This field is constant.

TicksPerSecond

Represents the number of ticks in 1 second.

Zero

Represents the zero TimeSpan value. This field is read-only.

Интерполяция строк

Интерполяция строк — упрощенный механизм форматирования строк. Он появился в версии C# 6.0.

Интерполяция позволяет сделать код более читабельным, а также выполнять логические и математические операции с объектами непосредственно во время форматирования. Чтобы использовать интерполяцию, достаточно указать перед строкой символ доллара — $.

Простой пример:

User user = new User { Name = "Oleg", Surname = "Petrov", Age = 35 };
Console.WriteLine($"Имя {user.Name} Фамилия {user.Surname} Возраст {user.Age}"); // Имя Oleg Фамилия Petrov Возраст 35

А в этом примере мы проверяем объект. Если он равен , то выводим дефолтное значение:

User user = null;
Console.WriteLine($"Имя {user?.Name ?? "Пусть тогда зовут Олег"}"); // Имя Пусть тогда зовут Олег

А вот пример с использованием настраиваемого формата:

long num = 12345678910;
Console.WriteLine($"{num:+# ### ### ## ##}"); // +1 234 567 89 10

Можно выполнять математические операции прямо во время форматирования:

double x = 15.59;
double y = 19.17;
Console.WriteLine($"{x} + {y} = {x + y}"); // 15,59 + 19,17 = 34,76

И добавлять пространство до или после вывода:

Console.WriteLine($"Имя: {person.Name, -10} Возраст: {person.Age, -10}"); // 10 пробелов после
Console.WriteLine($"Имя: {person.Name, 10} Возраст: {person.Age, 10}"); // 10 пробелов до

Как видите, возможностей для форматирования много, а пользоваться ими очень удобно.

Свойства

Возвращает компонент дней периода времени, представленного текущей структурой TimeSpan.

Возвращает компонент часов периода времени, представленного текущей структурой TimeSpan.

Возвращает компонент миллисекунд периода времени, представленного текущей структурой TimeSpan.

Возвращает компонент минут периода времени, представленного текущей структурой TimeSpan.

Возвращает компонент секунд периода времени, представленного текущей структурой TimeSpan.

Возвращает количество тактов, представляющее значение текущей структуры TimeSpan.

Возвращает значение текущей структуры TimeSpan, выраженное как целое и дробное количество дней.

Получает значение текущей структуры TimeSpan, выраженное как целое и дробное количество часов.

Получает значение текущей структуры TimeSpan, выраженное как целое и дробное количество миллисекунд.

Возвращает значение текущей структуры TimeSpan, выраженное как целое и дробное количество минут.

Возвращает значение текущей структуры TimeSpan, выраженное как целое и дробное количество секунд.

Описатель общего короткого («g») формата

Описатель формата «g» TimeSpan возвращает строковое представление значения TimeSpan в компактной форме, включая только необходимые элементы. Представление имеет следующую форму:

h:mm:ss

Элементы в квадратных скобках () являются необязательными. Двоеточие (:) является литеральным символом. В следующей таблице описываются остальные элементы.

Элемент Описание
Необязательный знак минуса, который означает отрицательный интервал времени.
d Необязательное число дней без предшествующих нулей.
h Количество часов в диапазоне от «0» до «23» без предшествующих нулей.
mm Количество минут в диапазоне от «00» до «59».
ss Количество секунд в диапазоне от «00» до «59».
. Разделитель долей секунд. Является эквивалентом для свойства NumberDecimalSeparator указанного языка и региональных параметров без переопределения пользователем.
FFFFFFF Доли секунд. Отображается как можно меньше цифр.

Как и описатель формата «G», описатель формата «g» является локализуемым. Его разделитель долей секунд зависит от текущего языка и региональных параметров или свойства NumberDecimalSeparator указанного языка и региональных параметров.

В следующем примере создаются два объекта TimeSpan, которые используются для выполнения арифметических операций, после чего выводится результат. В каждом случае используется составное форматирование для отображения значения TimeSpan с помощью описателя формата «g». Кроме того, он форматирует значение TimeSpan с использованием соглашений о форматировании текущего системного языка и региональных параметров (в данном случае это английский язык, США или en-US) и французского языка, Франция (fr-FR).

Properties

Gets the days component of the time interval represented by the current TimeSpan structure.

Gets the hours component of the time interval represented by the current TimeSpan structure.

Gets the milliseconds component of the time interval represented by the current TimeSpan structure.

Gets the minutes component of the time interval represented by the current TimeSpan structure.

Gets the seconds component of the time interval represented by the current TimeSpan structure.

Gets the number of ticks that represent the value of the current TimeSpan structure.

Gets the value of the current TimeSpan structure expressed in whole and fractional days.

Gets the value of the current TimeSpan structure expressed in whole and fractional hours.

Gets the value of the current TimeSpan structure expressed in whole and fractional milliseconds.

Gets the value of the current TimeSpan structure expressed in whole and fractional minutes.

Gets the value of the current TimeSpan structure expressed in whole and fractional seconds.

Описатель общего длинного («G») формата

Описатель формата «G» TimeSpan возвращает строковое представление значения TimeSpan в длинной форме, которая всегда включает и дни, и доли секунд. Строка, которая является результатом описателя стандартного формата «G» имеет следующий вид:

d:hh:mm:ss.fffffff

Элементы в квадратных скобках () являются необязательными. Двоеточие (:) является литеральным символом. В следующей таблице описываются остальные элементы.

Элемент Описание
Необязательный знак минуса, который означает отрицательный интервал времени.
d Число дней без предшествующих нулей.
hh Количество часов в диапазоне от «00» до «23».
mm Количество минут в диапазоне от «00» до «59».
ss Количество секунд в диапазоне от «00» до «59».
. Разделитель долей секунд. Является эквивалентом для свойства NumberDecimalSeparator указанного языка и региональных параметров без переопределения пользователем.
fffffff Доли секунд.

Как и описатель формата «G», описатель формата «g» является локализуемым. Его разделитель долей секунд зависит от текущего языка и региональных параметров или свойства NumberDecimalSeparator указанного языка и региональных параметров.

В следующем примере создаются два объекта TimeSpan, которые используются для выполнения арифметических операций, после чего выводится результат. В каждом случае используется составное форматирование для отображения значения TimeSpan с помощью описателя формата «G». Кроме того, он форматирует значение TimeSpan с использованием соглашений о форматировании текущего системного языка и региональных параметров (в данном случае это английский язык, США или en-US) и французского языка, Франция (fr-FR).

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: