На работе спросили: что напечатает следующая программа, если ее запустить 1 марта 2009 г. ровно в полдень в Нью Йорке? (Вместо Нью Йорка можно запустить программу в Москве — изменится ответ, но не его суть).
Ничего сложного или нового в этом нет, но, по-моему, это из тех мелочей, которые очень сильно портят жизнь.
Язык значения не имеет, нам представили вариант на Java:
Допустим, что программа выполнится от начала и до конца, а также что sleep не прерывается.
Напрашивается ответ, что программа напечатает 30 строк
На самом же деле, начиная с некоторой даты, которая как раз и зависит от места выполнения, вывод программы станет
Получается, что как минимум дважды в год в сутках не
Надеюсь, кому-нибудь это сохранит некоторое количество времени. :-)
Ничего сложного или нового в этом нет, но, по-моему, это из тех мелочей, которые очень сильно портят жизнь.
Язык значения не имеет, нам представили вариант на Java:
- import java.text.SimpleDateFormat;
- import java.util.Date;
-
- public class Question {
- private static final long SECONDS_PER_DAY = 24 * 60 * 60;
- private static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
-
- public static void main(String[] args) {
- for (int i = 0; i < 30; i++) {
- System.out.println("The time is: " + sdf.format(new Date()));
-
- try {
- // wait until tomorrow
- Thread.sleep(1000 * SECONDS_PER_DAY);
- }
- catch (InterruptedException e) {
- }
- }
- }
- }
-
* This source code was highlighted with Source Code Highlighter.
Допустим, что программа выполнится от начала и до конца, а также что sleep не прерывается.
Напрашивается ответ, что программа напечатает 30 строк
The time is: 12:00:00
.На самом же деле, начиная с некоторой даты, которая как раз и зависит от места выполнения, вывод программы станет
The time is: 13:00:00
. Произойдет это из-за перехода на летнее время (8 марта в США, 29 марта в России).Получается, что как минимум дважды в год в сутках не
24 * 60 * 60
секунд.Надеюсь, кому-нибудь это сохранит некоторое количество времени. :-)