netch80: (Default)
[personal profile] netch80
Цитируем Posix:

===
Epoch

The time zero hours, zero minutes, zero seconds, on January 1, 1970
Coordinated Universal Time (UTC).
===

Смотрим в википедию - с 1970-го года в UTC было 24 вставных секунды (leap seconds).

Проверяем системные часы:

>>> a = (10*366+29*365)*86400
>>> a
1230768000
>>> import time
>>> time.gmtime(a)[0:6]
(2009, 1, 1, 0, 0, 0)

то есть никто не применял коррекцию по ним.

Первый вопрос - покажите мне хоть один юникс или одну Windows, чтобы честно реализовывала UTC, а не UT1 или UT2?

Второй вопрос - а нафига этот UTC нужен в практической машинной реальности?

Date: 2009-11-13 10:24 pm (UTC)
From: [identity profile] netch80.livejournal.com
Ага, вот с right/* картина сошлась.

$ env TZ=UTC ./t 
 1230767999 -> 2008-12-31T23:59:59
 1230768000 -> 2009-01-01T00:00:00
 1230768022 -> 2009-01-01T00:00:22
 1230768023 -> 2009-01-01T00:00:23
 1230768024 -> 2009-01-01T00:00:24
$ env TZ=right/UTC ./t 
 1230767999 -> 2008-12-31T23:59:36
 1230768000 -> 2008-12-31T23:59:37
 1230768022 -> 2008-12-31T23:59:59
 1230768023 -> 2008-12-31T23:59:60
 1230768024 -> 2009-01-01T00:00:00


Тестовый код:

#include 
[Error: Irreparable invalid markup ('<stdio.h>') in entry. Owner must fix manually. Raw contents below.]

Ага, вот с right/* картина сошлась.

<pre>
$ env TZ=UTC ./t
1230767999 -> 2008-12-31T23:59:59
1230768000 -> 2009-01-01T00:00:00
1230768022 -> 2009-01-01T00:00:22
1230768023 -> 2009-01-01T00:00:23
1230768024 -> 2009-01-01T00:00:24
$ env TZ=right/UTC ./t
1230767999 -> 2008-12-31T23:59:36
1230768000 -> 2008-12-31T23:59:37
1230768022 -> 2008-12-31T23:59:59
1230768023 -> 2008-12-31T23:59:60
1230768024 -> 2009-01-01T00:00:00
</pre>

Тестовый код:
<pre><code>
#include <stdio.h>
#include <time.h>

void
test(time_t t)
{
struct tm *tm;
tm = localtime(&t);
printf("%11lu -> %04d-%02d-%02dT%02d:%02d:%02d\n",
(unsigned long) t,
tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
}

int
main()
{
test(1230767999);
test(1230768000);
test(1230768022);
test(1230768023);
test(1230768024);
return 0;
}
</code></pre>

А что делает ntpd - вопрос интересный.

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 3rd, 2026 05:37 am
Powered by Dreamwidth Studios