C#な上にアルゴリズムも糞も無いのですが。
lang
1DateTime t = DateTime.Now; //時刻:現在
2TimeSpan dt = TimeSpan.FromSeconds(10); //時間:十秒
3Console.WriteLine((t + dt).ToString()); //現在時刻の10秒先
とまあ標準で思いっきり実装されています。
まあこれだと聞きたいことに答えていないと思うので
実装がどうなっているか覗いてみます:
lang
1public struct DateTime : IComparable, IFormattable,...
2{
3...
4 private UInt64 dateData;
5
6 // Constructs a DateTime from a tick count. The ticks
7 // argument specifies the date as the number of 100-nanosecond intervals
8 // that have elapsed since 1/1/0001 12:00am.
9 //
10 public DateTime(long ticks) {
11 if (ticks < MinTicks || ticks > MaxTicks)
12 throw new ArgumentOutOfRangeException(...
13 Contract.EndContractBlock();
14 dateData = (UInt64)ticks;
15 }
16...
時刻をある地点から最小単位(1tick = 100ns)で保持して計算しているようです。
雑に言えば、12時34分は12*60+34=754分として、
1時間47分=107分を引きます。
その後、表示等で必要になれば時分単位にして返します。
これをものすごく細かい単位でやってるだけです。
DateTimeの内部実装
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/05/08 06:28