Time and again I’m forgetting about C# string formatting syntax. The MS pages about it are bad.
But here is a page with a lot of number string formatting examples and at the bottom a little testing tool. Quite valuable.
Some examples I wanted to mention here:
| double d= | a= | d.ToString(a) | remark
|-----------|-----------|---------------|--------
| 1234.57 | "0" | 1235 | rounded
| 1234.57 | "0.0" | 1234.6 | rounded
| 1234 | "0.0" | 1234.0 | .0: show digit always
| 1234.57 | "0.#" | 1234.6 | .#: show digit only if needed
| 1234.57 | "0.##" | 1234.57 |
| 1234.57 | "0.###" | 1234.57 |
| 1234 | "0.#" | 1234 |
| 1234.567 | "F1" | 1234.6 | F: float with one decimal
| 1234.567 | "F" | 1234.57 | F: float with two decimals
| 1234.567 | "F3" | 1234.567 | F: float with three decimals
| 1.23 | "##.##" | 1.23 | #.: show digit only if needed
| 0.23 | "##.##" | .23 |
| 0.23 | "#0.##" | 0.23 |
| 0.23 | "00.##" | 00.23 |
| 0.23 | ",5:#0.##" | 0.23 | This one does not work with
| d.ToString(a), but does work with string.Format or string interpolation.
| String interpolation: d can be formatted with all
| format markers like this: $"{d:0.##}" or "$"{d,5:0.##}".
| int d= | a= | d.ToString(a) | remark
|--------|--------------|---------------|--------
| 12 | "0" | 12 |
| 12 | "00" | 12 |
| 12 | "000" | 012 |
| 12 | "+00;X00" | +12 | first for > 0
| 12 | "X" | C |
| 12 | "x4" | 000c |
| -12 | "+00;X00" | X12 | second for < 0
| 0 | "+00;X00" | +0 | first for == 0
| 0 | "+00;X00;AQ" | AQ | third for == 0, if existing
The following does not work with d.ToString(a). But with string.Format(a, d).
The zero after the { in a is the index of the d-value.
| int d= | a= | string.Format(a, d)) | = string interpolation
|--------|--------------|----------------------|-----------------------
| 4 | "{0,1:0}" | 4 | $"{4,1:0}"
| 2 | "{0,2:0}" | 2 | $"{2,2:0}"
| 4 | "{0,2:00}" | 04 | $"{4,2:00}"
| 2 | "{0,3:0}" | 2 | $"{2,3:0}"
| 9 | "{0,4:00}" | 09 | $"{9,4:00}"
| 9 | "{0:000}" | 009 | $"{9:000}"
Here is a page with a lot of DateTime string formatting examples and at the bottom a little testing tool. Quite valuable.
Some examples I wanted to mention here:
| DateTime d= | a= | d.ToString(a)
|---------------------|------------------------|------------------
| 2020-05-19 13:47:27 | "yy-MM-dd HH:mm:ss" | 20-05-19 13:47:27
| 2020-05-19 13:47:27 | "yyyy-MM-dd HH:mm" | 2020-05-19 13:47
| 2020-05-19 13:47:27 | "yyyyMMddTHHmm" | 20200519T1347
| DateTime d= | c = Culture. | d.ToString(c)
| | GetCultureInfo(..) |
|---------------------|--------------------|----------------------
| 2021-05-19 13:47:27 | "DE" | 19.05.2021 13:47:27
| 2021-05-19 13:47:27 | "PL" | 19.05.2021 13:47:27
| 2021-05-19 13:47:27 | "RU" | 19.05.2021 13:47:27
| 2021-05-19 13:47:27 | "en-GB" | 19/05/2021 13:47:27
| 2021-05-19 13:47:27 | "en-US" | 5/19/2021 1:47:27 PM