рдПрдордПрд╕рдбреА рдЯрд╛рдЗрдо рдЬреЛрди рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдПрдордПрд╕рдХреЗ рдХреЗ рд▓рд┐рдП - рдирдИ Y2K рд▓реЛрдХрд▓ рд╕реНрдХреЗрд▓

рд╣рд░ рдХреЛрдИ, рд╢рд╛рдпрдж, рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рд╕реБрдирд╛ рд╣реИ рдХрд┐ рд░реВрд╕ рдореЗрдВ рдЧрд░реНрдореА рдХреЗ рд╕рдордп рд╕реЗ рд╕рд░реНрджрд┐рдпреЛрдВ рдХреЗ рд╕рдордп рддрдХ рд╕рдВрдХреНрд░рдордг рдХреЛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╣рдо рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдХреИрд╕реЗ рдзрдордХреА рджреЗрддрд╛ рд╣реИ - рдФрд░ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рд╢рд╛рд╕рдХ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рд╣реИ? 29-30 рдЕрдХреНрдЯреВрдмрд░, 2011 рдХреА рд░рд╛рдд рдХреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ - рдЬреЛ, рд╡реИрд╕реЗ, рдХреЗрд╡рд▓ 2 рд╕рдкреНрддрд╛рд╣ рджреВрд░ рд╣реИ?

3 рдЬреВрди, 2011 рдПрди-107 "рд░реВрд╕реА рд╕рдВрдШ рдХреЗ рдирдП рд╕рдВрдШреАрдп рдХрд╛рдиреВрди" рд╕рдордп рдХреА рдЧрдгрдирд╛ рдкрд░ " :
рдЗрди рдмрджрд▓рд╛рд╡реЛрдВ рд╕реЗ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЦрддрд░рд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдФрд░ рдХрдм рдмрджрд▓рддрд╛ рд╣реИ?


Europe/Moscow : MSD = UTC+4 MSK = UTC+3. timezone , MSK UTC+4. , , , ┬л┬╗ тАФ .. Europe/Moscow.

UNIX timestamp тАФ , , 1970-01-01 00:00:00 UTC. .

Timestamp
0Jan  1 03:00:00 MSK 1970Jan  1 03:00:00 MSK 1970
20111296000000Jan 26 03:00:00 MSK 2011Jan 26 03:00:00 MSK 2011
20111310000000Jul  7 04:53:20 MSD 2011Jul  7 04:53:20 MSK 2011
20111325000000Dec 27 18:33:20 MSK 2011Dec 27 19:33:20 MSK 2011
1319929199Oct 30 02:59:59 MSD 2011Oct 30 02:59:59 MSK 2011
1319929200Oct 30 02:00:00 MSK 2011Oct 30 03:00:00 MSK 2011

, , Y2k 1319929199 1319929200- тАФ , .


(.. , ) TZ database, elsie.nci.nih.gov/pub

: 4 тАФ , тАФ .

TZ database : 2011-06-06, 2011h 2011-06-15.

, : tzdata , 2011h (.. 2011i, 2011j ..) тАФ .

timezone?


, .

, , timezone Europe/Moscow тАФ , -- UTC тАФ .

:

ntp-, тАФ , ?


, : ntp- UNIX timestamp, , , . , тАФ , ntp- , , , : ntp, ┬л ┬╗ ntp ┬л┬╗ . ┬л┬╗ timezone.

- UTC, тАФ GMT?


, : UTC (Universal Time, Coordinated) (~ 1960-) тАФ , , , .

тАФ GMT UTC тАФ GMT ┬л┬╗ . GMT UTC ~0.9 . , 50 , ┬л ┬╗ GMT.

, - ?


, , , .


, тАФ , , : 2011-10-30 01:59 1 1 . / 02:00 тАФ , , , timezone . 03:00 тАФ , .

Linux


Linux timezones, /usr/share/zoneinfo. тАФ , , :
ALT Linux Platform 6tzdata2011h2011-07-01
Arch Linuxtzdata2011h-1<2011-07-08
CentOS/RHEL 4tzdata2011h-2.el42011-08-29
CentOS/RHEL 5tzdata2011h-1.el52011-06-28
Debian stable (squeeze)tzdata2011h-0squeeze12011-08-13
openSUSE 11.4timezone2011i-2.2.12011-09-04
Ubuntu hardytzdata2011j~repack-0ubuntu0.8.042011-09-16
Ubuntu lucidtzdata2011j-0ubuntu0.10.042011-09-16
Ubuntu nattytzdata2011j-0ubuntu0.11.042011-09-15

: :
#!/bin/sh -ef
S1=$(LC_ALL=C TZ=Europe/Moscow date -d @1314567890)
[ "$S1" = 'Mon Aug 29 01:44:50 MSK 2011' ] || (echo FAIL1; exit 1)
S2=$(LC_ALL=C TZ=Europe/Moscow date -d @1324567890)
[ "$S2" = 'Thu Dec 22 19:31:30 MSK 2011' ] || (echo FAIL2; exit 2)
echo OK

-, OK exit status тАФ . : , , - - - timezones ; тАФ , - .

FreeBSD


head stable FreeBSD 8 2011-06-28.

: - , :
#!/bin/sh -ef
S1=$(LC_ALL=C TZ=Europe/Moscow date -r 1314567890)
[ "$S1" = 'Mon Aug 29 01:44:50 MSK 2011' ] || (echo FAIL1; exit 1)
S2=$(LC_ALL=C TZ=Europe/Moscow date -r 1324567890)
[ "$S2" = 'Thu Dec 22 19:31:30 MSK 2011' ] || (echo FAIL2; exit 2)
echo OK

Mac OS X. , - , .

Solaris


Timezone 2011h :
, , patchadd, , tzreload.

7055084.

Windows


Windows 2011 тАФ 2570791 ( pokryshkin). . :
.

, 914387.
( ComputerPers)

Windows- ┬л , , ┬╗ roman_tik.

Java


Java, , timezones - $JAVA_HOME/lib/zi тАФ ( ) .

┬л┬╗ Oracle Java SE 2011h, 1.3.40, 2011-06-29.

: TestMSD.java :
import java.util.*;
import java.text.DateFormat;

public class TestMSD {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance(TimeZone.getTimeZone("Europe/Moscow"));
        DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US);
        df.setCalendar(c);

        c.setTimeInMillis(1314567890L * 1000L);
        if (!df.format(c.getTime()).equals("Monday, August 29, 2011 1:44:50 AM MSK")) {
            System.out.println("FAIL1");
            System.exit(1);
        }

        c.setTimeInMillis(1324567890L * 1000L);
        if (!df.format(c.getTime()).equals("Thursday, December 22, 2011 7:31:30 PM MSK")) {
            System.out.println("FAIL2");
            System.exit(2);
        }

        System.out.println("OK");
        System.exit(0);
    }
}

javac TestMSD.java, java TestMSD. тАФ OK stdout exit status = 0, .

Android


Android- /etc/timezones.db, java- java. /usr/share/zoneinfo .

, , , :

: 2011-2012 , ┬лMoscow Standard Time┬╗ ; ┬л┬╗ :


Maemo


Maemo , GNU/Linux тАФ .. /usr/share/zoneinfo, tzdata .. ( wholeman):
: busybox' date -d 12221931.30 +%s 1324567890.

Symbian


, , .. - ┬л┬╗ :
: Android, ┬л тЖТ тЖТ ┬╗, - 2011 , ┬лGMT +3.00 ┬╗:

тАФ , .



, , , : , ( ), , тАФ , , : Windows, Mac OS X / Classic, / Symbian, Android, iOS, MeeGo, Windows Mobile/Phone 7, Nabaztag, Playstation/XBox, Perl, PHP, Ruby, Python, SQL- ..


Source: https://habr.com/ru/post/In130363/


All Articles