未验证 提交 be3b593e 编写于 作者: D devsko 提交者: GitHub

Fix TimeOnly format O (#51484)

上级 4bcc1c12
......@@ -1265,7 +1265,7 @@ internal static bool TryFormatTimeOnlyO(int hour, int minute, int second, long f
destination[5] = ':';
WriteTwoDecimalDigits((uint)second, destination, 6);
destination[8] = '.';
WriteDigits((uint)fraction, destination.Slice(9));
WriteDigits((uint)fraction, destination.Slice(9, 7));
return true;
}
......
......@@ -374,7 +374,7 @@ public static void FormatParseTest()
[Fact]
public static void OAndRFormatsTest()
{
TimeOnly timeOnly = TimeOnly.FromDateTime(DateTime.Today);
TimeOnly timeOnly = TimeOnly.FromDateTime(DateTime.Now);
string formattedDate = timeOnly.ToString("o");
Assert.Equal(16, formattedDate.Length);
Assert.Equal(':', formattedDate[2]);
......@@ -389,6 +389,7 @@ public static void OAndRFormatsTest()
parsedTimeOnly = TimeOnly.ParseExact(formattedDate.AsSpan(), "O".AsSpan());
Assert.Equal(timeOnly, parsedTimeOnly);
timeOnly = new TimeOnly(timeOnly.Hour, timeOnly.Minute, timeOnly.Second);
formattedDate = timeOnly.ToString("r");
Assert.Equal(8, formattedDate.Length);
Assert.Equal(':', formattedDate[2]);
......@@ -465,15 +466,23 @@ public static void TryFormatTest()
Span<char> buffer = stackalloc char[100];
TimeOnly timeOnly = TimeOnly.FromDateTime(DateTime.Now);
buffer.Fill(' ');
Assert.True(timeOnly.TryFormat(buffer, out int charsWritten));
Assert.Equal(charsWritten, buffer.TrimEnd().Length);
buffer.Fill(' ');
Assert.True(timeOnly.TryFormat(buffer, out charsWritten, "o"));
Assert.Equal(16, charsWritten);
Assert.Equal(16, buffer.TrimEnd().Length);
buffer.Fill(' ');
Assert.True(timeOnly.TryFormat(buffer, out charsWritten, "R"));
Assert.Equal(8, charsWritten);
Assert.Equal(8, buffer.TrimEnd().Length);
Assert.False(timeOnly.TryFormat(buffer.Slice(0, 3), out charsWritten));
Assert.False(timeOnly.TryFormat(buffer.Slice(0, 3), out charsWritten, "r"));
Assert.False(timeOnly.TryFormat(buffer.Slice(0, 3), out charsWritten, "O"));
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册