C# 格式化NodeTime instant时是否包含尾随零?
使用NodaTime 2.4.x 如果我创建一个瞬间的C# 格式化NodeTime instant时是否包含尾随零?,c#,.net,nodatime,C#,.net,Nodatime,使用NodaTime 2.4.x 如果我创建一个瞬间的Instant,然后尝试使用包含毫秒/纳秒的Pattern对其进行格式化,则后面的零将被截断 e、 g 使用系统; 使用NodaTime; 使用NodaTime.Text; 公共课程 { 私有静态只读InstantPattern\u InstantPattern =InstantPattern.CreateWithInvariantCulture(“uuuu'-'MM'-'dd'T'HH':'MM':'ss;FFFFFF'Z'); 公共静态v
Instant
,然后尝试使用包含毫秒/纳秒的Pattern
对其进行格式化,则后面的零将被截断
e、 g
使用系统;
使用NodaTime;
使用NodaTime.Text;
公共课程
{
私有静态只读InstantPattern\u InstantPattern
=InstantPattern.CreateWithInvariantCulture(“uuuu'-'MM'-'dd'T'HH':'MM':'ss;FFFFFF'Z');
公共静态void Main()
{
var instantRound=瞬间。从unixtimemissions(158507100000);
var instantNotRound=瞬间。从Unixtimemissions(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
基本上,保留后面的零。您可以参考模式说明符F
将导致删除不重要的尾随数字<代码>f将不会
您还使用了错误的方法名称。它应该是毫秒SInceUnixePoch的,而不是UnixtimeMissions的
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));
}
使用ffffff
有效吗?。。。是的。这很简单,我觉得我花了好几个小时寻找它。请随意写一个答案,我会将其设置为已接受。uuu
在NodaTime中可用,只是必须是最新的。您链接的文档用于1.4.x
,而我使用的文档用于2.4.x
。这就是我获得原始格式的原因:我需要在秒后将精度限制为6,但仍然使用大写Fs。@Danieldwards我明白了。文档页面看起来非常相似。。。我应该更加小心。。。无论如何,编辑。