当我执行下面的代码时,Zeros被修剪掉了。
但我需要输出和零。如果毫秒为零,我也不应该显示它。
string date = dateTime.ToString("yyyy-MM-dd HH:mm:ss.FFFFFFFZ", CultureInfo.InvariantCulture);```
**Output: 2021-08-08 08:08:34.196Z
Expected: 2021-08-08 08:08:34.196000Z**
Case 2:
```DateTime dateTime = DateTime.Parse("2021-08-08T08:08:34");
string date = dateTime.ToString("yyyy-MM-dd HH:mm:ss.fffffffZ", CultureInfo.InvariantCulture);```
**Output :2021-08-08 08:08:34.0000000Z
Expected: 2021-08-08 08:08:34Z**
我对您的规则的解释是:"如果毫秒分量正好为0,则根本不渲染它。否则,将任何毫秒分量渲染到六(或七?(个位置";。
没有内置的格式说明符,所以您必须编写一些自己的代码。
看看dateTime.Millisecond
。如果它是零,那么你就不想要任何毫秒成分。如果它为非零,则需要ffffff
。类似于:
string millisecondsFormat = dateTime.Millisecond == 0 ? "" : ".fffffff";
string date = dateTime.ToString($"yyyy-MM-dd HH:mm:ss{millisecondsFormat}Z", CultureInfo.InvariantCulture)
这提供了以下输入/输出:
- 新日期时间(2020,1,1,5,6,7(:2020-01-01 05:06:07Z
- 新日期时间(2020,1,1,5,6,7800(:2020-01-01 05:06:07.800000Z
在dotnetfiddle.net.上查看
你可以做一个技巧,比如:
string date = datetime.ToString(datetime.Millisecond == 0 ? "yyyy-MM-dd HH:mm:ss" : "yyyy-MM-dd HH:mm:ss.fffffffZ", CultureInfo.InvariantCulture);