예제 #1
0
        private async void testbutton_Click(object sender, RoutedEventArgs e)
        {
            DateTimeGenerator myDTG;
            DateTime          TheNetworkTime;
            DateTime          TheLocalTime;
            TimeSpan          span;

            myDTG = DateTimeGenerator.Instance;

            TheLocalTime   = DateTime.UtcNow;
            TheNetworkTime = await myDTG.GetNTPTime();

            span = TheNetworkTime.Subtract(TheLocalTime);

            textBox1.Text = TheLocalTime.ToString();
            textBox2.Text = TheNetworkTime.ToString();

            textBox3.Text = span.ToString();
        }
예제 #2
0
        public static int GetTimestamp(ref TimeVal tp)
        {
            if (!_isInitialized)
            {
                if (1 == Interlocked.Increment(ref _initializeLock))
                {
                    //	// La valeur de cette propriété représente le nombre d’intervalles de 100 nanosecondes qui se sont écoulées depuis 12:00:00 minuit,
                    //	// le 1er janvier 0001(0 : 00:00 UTC 1er janvier 0001, dans le calendrier grégorien), qui représente DateTime.MinValue.
                    //	// Il n’inclut pas le nombre de graduations qui sont attribuables aux secondes intercalaires.
                    _origin      = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
                    _originTicks = _origin.Ticks;
                    DateTimeGenerator myDTG;
                    DateTime          TheNetworkTime;
                    DateTime          TheLocalTime;
                    TimeSpan          elapsedSpan;

                    myDTG = DateTimeGenerator.Instance;

                    TheLocalTime   = DateTime.UtcNow;
                    TheNetworkTime = myDTG.GetNTPTime();

                    elapsedSpan = TheNetworkTime.Subtract(TheLocalTime);

                    Console.WriteLine("LocalTime {0}", TheLocalTime.ToString());
                    Console.WriteLine("NetworkTime {0}", TheNetworkTime.ToString());

                    Console.WriteLine("Origin Time {0} ", _origin.ToString());

                    _originTicks = _origin.Ticks - elapsedSpan.Ticks;
                    Console.WriteLine("   {0:N0} nanoseconds (10^9s)", elapsedSpan.Ticks * 100);

                    Console.WriteLine("   {0:N0} origin ticks", _originTicks);
                    Console.WriteLine("   {0:N0} delta ticks", elapsedSpan.Ticks);
                    Console.WriteLine("   {0:N2} seconds", elapsedSpan.TotalSeconds);
                    Console.WriteLine("   {0:N2} minutes", elapsedSpan.TotalMinutes);
                    Console.WriteLine("   {0:N0} days, {1} hours, {2} minutes, {3} seconds, millisecond {4}",
                                      elapsedSpan.Days, elapsedSpan.Hours,
                                      elapsedSpan.Minutes, elapsedSpan.Seconds, elapsedSpan.TotalMilliseconds);

                    Console.WriteLine("Corrected Time {0} ", _origin.ToString());

                    _originTicks += elapsedSpan.Ticks;
                    Console.WriteLine(" Corrected ticks  {0:N0} ticks", _originTicks);

                    // next caller can use ticks for time calculation
                    _isInitialized = true;
                }
                else
                {
                    Interlocked.Decrement(ref _initializeLock);
                    // wait until first caller has initialized static values
                    while (!_isInitialized)
                    {
                        Thread.Sleep(1);
                    }
                }
            }
            //DateTime now = DateTime.Now;
            DateTime now = DateTime.UtcNow;

            TimeSpan span = new TimeSpan(now.Ticks - _originTicks);

            tp.tv_sec  = (uint)(span.TotalSeconds);
            tp.tv_usec = (uint)((span.TotalMilliseconds % 1000) * 1000);

            return(0);
        }