使用NodaTime 2.4.x
[如果我创建一个Instant
并在瞬间开始爆炸,然后尝试使用包含毫秒/纳秒的Pattern
对其进行格式化,则尾随的零将被切除。
例如
using System;
using NodaTime;
using NodaTime.Text;
public class Program
{
private static readonly InstantPattern _instantPattern
= InstantPattern.CreateWithInvariantCulture("uuuu'-'MM'-'dd'T'HH':'mm':'ss;FFFFFF'Z'");
public static void Main()
{
var instantRound = Instant.FromUnixTimeMilliseconds(158507100000);
var instantNotRound = Instant.FromUnixTimeMilliseconds(158507100001);
Console.WriteLine(_instantPattern.Format(instantRound));
Console.WriteLine(_instantPattern.Format(instantNotRound));
}
}
输出
1975-01-09T13:45:00Z
1975-01-09T13:45:00.001Z
无论如何,我可以得到以下输出,最好使用内置方法:
1975-01-09T13:45:00.000000Z
1975-01-09T13:45:00.001000Z
基本上,保持尾随零。
关于模式说明符,您可以参考this page。 F
将导致删除无关紧要的尾随数字。 f
不会。
您还使用了错误的方法名称。应该是FromMillisecondsSinceUnixEpoch
,而不是FromUnixTimeMilliseconds
。
private static readonly InstantPattern _instantPattern
= InstantPattern.CreateWithInvariantCulture("uuuu'-'MM'-'dd'T'HH':'mm':'ss;ffff'Z'");
public static void Main()
{
var instantRound = Instant.FromMillisecondsSinceUnixEpoch(158507100000);
var instantNotRound = Instant. FromMillisecondsSinceUnixEpoch(158507100001);
Console.WriteLine(_instantPattern.Format(instantRound));
Console.WriteLine(_instantPattern.Format(instantNotRound));
}