我怎样才能占非常少量的时间?
How can I account for very small amounts of time?
这是一个奇怪的问题,但给出以下结果...
DateTime.MaxValue.Ticks;
= 3155378975999999999
new DateTime(DateTime.MaxValue.Year,
DateTime.MaxValue.Month,
DateTime.MaxValue.Day,
DateTime.MaxValue.Hour,
DateTime.MaxValue.Minute,
DateTime.MaxValue.Second,
DateTime.MaxValue.Millisecond)
.Ticks;
= 3155378975999990000
(是的,我知道这是可以做到的,但是...)
new DateTime(DateTime.MaxValue.Ticks);
这 9999 个刻度代表什么?我如何手动计算丢失的 9999 个刻度?例如,假设它们代表纳秒。我可以创建一个 "AddNanoseconds" 方法吗?
谢谢!
DateTime.MaxValue.Ticks
以刻度为单位,而您的最大化日期 "stops" 以毫秒为单位,因此不包括最后 9999 个刻度。
用一个简单的例子来说明这一点:
var maxTicks = DateTime.MaxValue.Ticks;
Console.WriteLine("Max ticks:");
Console.WriteLine(maxTicks); // 3155378975999999999
var maxedDate = new DateTime(DateTime.MaxValue.Year,
DateTime.MaxValue.Month,
DateTime.MaxValue.Day,
DateTime.MaxValue.Hour,
DateTime.MaxValue.Minute,
DateTime.MaxValue.Second,
DateTime.MaxValue.Millisecond);
var ticksFromDate = maxedDate.Ticks;
Console.WriteLine("Max ticks from date:");
Console.WriteLine(ticksFromDate); // 3155378975999990000
var withExtraTicks = maxedDate.AddTicks(9999);
Console.WriteLine("Max date with ticks added:");
Console.WriteLine(withExtraTicks.Ticks); // 3155378975999999999
try{
var tooLong = withExtraTicks.AddTicks(1);
Console.WriteLine("Note: This line will only be shown if run on Diskworld.");
}
catch(Exception ex){
Console.WriteLine("Failed! Message:");
// Will show the message:
// "The added or subtracted value results in an un-representable DateTime."
Console.WriteLine(ex.Message);
}
这是一个奇怪的问题,但给出以下结果...
DateTime.MaxValue.Ticks;
= 3155378975999999999
new DateTime(DateTime.MaxValue.Year,
DateTime.MaxValue.Month,
DateTime.MaxValue.Day,
DateTime.MaxValue.Hour,
DateTime.MaxValue.Minute,
DateTime.MaxValue.Second,
DateTime.MaxValue.Millisecond)
.Ticks;
= 3155378975999990000
(是的,我知道这是可以做到的,但是...)
new DateTime(DateTime.MaxValue.Ticks);
这 9999 个刻度代表什么?我如何手动计算丢失的 9999 个刻度?例如,假设它们代表纳秒。我可以创建一个 "AddNanoseconds" 方法吗?
谢谢!
DateTime.MaxValue.Ticks
以刻度为单位,而您的最大化日期 "stops" 以毫秒为单位,因此不包括最后 9999 个刻度。
用一个简单的例子来说明这一点:
var maxTicks = DateTime.MaxValue.Ticks;
Console.WriteLine("Max ticks:");
Console.WriteLine(maxTicks); // 3155378975999999999
var maxedDate = new DateTime(DateTime.MaxValue.Year,
DateTime.MaxValue.Month,
DateTime.MaxValue.Day,
DateTime.MaxValue.Hour,
DateTime.MaxValue.Minute,
DateTime.MaxValue.Second,
DateTime.MaxValue.Millisecond);
var ticksFromDate = maxedDate.Ticks;
Console.WriteLine("Max ticks from date:");
Console.WriteLine(ticksFromDate); // 3155378975999990000
var withExtraTicks = maxedDate.AddTicks(9999);
Console.WriteLine("Max date with ticks added:");
Console.WriteLine(withExtraTicks.Ticks); // 3155378975999999999
try{
var tooLong = withExtraTicks.AddTicks(1);
Console.WriteLine("Note: This line will only be shown if run on Diskworld.");
}
catch(Exception ex){
Console.WriteLine("Failed! Message:");
// Will show the message:
// "The added or subtracted value results in an un-representable DateTime."
Console.WriteLine(ex.Message);
}