[identity profile] starushkaqu.livejournal.com posting in [community profile] useless_faq
в России часы переводят в последнее воскресенье марта,
то есть число каждый год разное.
Каким образом мобильники, видаки, двд (некоторых марок)
сами переключаются на летнее время?
Откуда они знают, когда переводиться?
Допустим, в них заложена программа лет на 20 вперёд,
но в разных странах перевод происходит в разные дни.
Значит, получается,
если телефон сам переключился - "белый",
а если нет - "серый" импорт???

Date: 2007-03-28 07:50 am (UTC)
From: [identity profile] jenay-fm.livejournal.com
Хм... видимо, вопрос задает не программист...
Поверьте, все эти даты с легкостью вычисляются путем нехитрых арифметических операций :)

Date: 2007-03-28 08:02 am (UTC)
From: [identity profile] vaylenn.livejournal.com
+1. Хоть сам и не программист 8)

Date: 2007-03-28 07:53 am (UTC)
From: [identity profile] dzhef.livejournal.com
я думаю телефон сам звонит и узнает сколько время
либо фсб всем присылает точное время, что бы шпионить было удобно

Date: 2007-03-28 07:54 am (UTC)
From: [identity profile] toivonens.livejournal.com
В некоторых мобильниках есть функция "автокорректировки" времени. Видимо, они подстраиваются под время оператора.

Date: 2007-03-28 08:12 am (UTC)
From: [identity profile] c-arlos.livejournal.com
думаю, все же программа высчитывает
компы в выключенном состоянии и без инета тоже безошибочно переводят время
BIOS трудится))

Date: 2007-03-28 08:13 am (UTC)
From: [identity profile] toivonens.livejournal.com
Это было о разных странах

Date: 2007-03-28 05:08 pm (UTC)
From: [identity profile] d47up.livejournal.com
время переводит не биос а ОСь. Две ОСи на одной машине могут два раза перевести время (из опыта) :)

Date: 2007-03-28 04:32 pm (UTC)
From: [identity profile] toivonens.livejournal.com
да вряд ли. скорее всего они дйествительно это время вычисляют.
но меня смутил вопрос про разные страны.
хотя вот мой мобильник перехода на летнее и зимнее время не делает. может и вправду - это запрограммировано только для поставляемых в Россию телефонов?

Date: 2007-03-28 08:14 am (UTC)
From: [identity profile] obezyanka.livejournal.com
сейчас некоторые мобильники автоматически переводят часы, если вы приехали в другой часовой пояс, то есть "получают информацию сами"

Date: 2007-03-28 08:15 am (UTC)
From: [identity profile] pequeno-raposa.livejournal.com
В мобильниках же есть календарь с днями недели.

Date: 2007-03-28 08:26 am (UTC)
From: [identity profile] rain251.livejournal.com
белый от серого отличается только таможенным оформлением. в железе отличий нет.
предназначенный для другой страны - там да, может не быть каких-то функций или языков.
по большей части такая техника просит установку страны проживания - для автоматической настройки (например частотной сетки каналов в случае двд/тв). или сама ее легко может получить - в случае мобильника.
Даты считаются по примитивному алгоритму на любой срок вперед.

Date: 2007-03-28 09:41 pm (UTC)
From: [identity profile] rain251.livejournal.com
зависит от наличия такой функции в телефоне.
большинство телефонов просто не умеют это делать - вот и все.
те что имеют, в 99.9% переключаются по внутренним вычислениям, а не сигналу оператора (дата и время должны быть корректно установлены).
телефоны одной модели могут иметь разные версии прошивки (встроенной программы). а в прошивку входит всё - и языковые блоки и доп.функции и настройки сетей и т.п...
кроме того в настройках телефона просто может быть отключена данная функция.

у меня вот двд постоянно пытается с канала время обновить. а так как идет и спутник и кабель и местный эфир, то время скачет, поэтому я просто отключил эту функцию.

Date: 2007-03-28 08:49 am (UTC)
From: [identity profile] sajuri-nitta.livejournal.com
Ведь ПЕРЕВОДЯТ в ПОСЛЕДНИЕ ВЫХОДНЫЕ.
Очень легко рассчитывается..

Date: 2007-03-28 09:13 am (UTC)
From: [identity profile] http://users.livejournal.com/primus_/
"Белые" DVD плейеры получают информацию из сети 220V. Там вообще очень много информации. Поэтому часто у них сбивается время. А "серые" батарейные устройства просто имеют календари на ближайшие 10 лет - дольше "серые" устройства не живут. Сотовые телефоны синхронизируются по эфиру, а поезда по рельсам - у них там есть своя рельсовая сеть (еще говорят railway network, и от этой сети пришло слово traffic и к остальному транспорту). С самолетами сложнее, особенно осенью (тяжело зависать на лишний час в воздухе). Со спутниками кошмар - они перманентно падают, у них поэтому время не меняют. А планеты и звезды вообще неуправляемы - кто же у них время меняет???

Date: 2007-03-28 03:48 pm (UTC)
From: [identity profile] oniks-z.livejournal.com
о, крута, эт если привязать проводок к рельсам можно законнектиться к их сетке?? 8))

Date: 2007-03-28 09:39 pm (UTC)
From: [identity profile] http://users.livejournal.com/primus_/
Можно, но там скорость маленькая - 2400 Бит/сек.

Date: 2007-03-28 09:35 am (UTC)
From: [identity profile] b00lean0verfl0w.livejournal.com
if ((today.day==sunday)&&((today.data+7)>sizeof(march)) time.hours--;
xD

Date: 2007-03-28 09:57 am (UTC)
From: [identity profile] b00lean0verfl0w.livejournal.com
Ой точно. )
А еще я там одну закрывающую скобку забыл, да :D

Date: 2007-03-28 01:27 pm (UTC)
From: [identity profile] ex-ex-ex-ab.livejournal.com
до сих пор вы жили во мраке, но я открою вам глаза:
Image


В телефоне очень много маленьких календариков!

Re: и чё?

Date: 2007-03-29 06:40 am (UTC)
From: [identity profile] ex-ex-ex-ab.livejournal.com
труба!
если телефон знает что нынче март и по календарику поймёт, что это последнее воскресенье?

Date: 2007-03-28 04:27 pm (UTC)
From: [identity profile] danova.livejournal.com
у меня не переводит. никада.

Date: 2007-03-28 05:12 pm (UTC)
From: [identity profile] d47up.livejournal.com
В мабилах есть опция синхронизации времени с сетью. В моей нокии это называется "Корекция: дата и время (Вкл|Выкл|С запросом)"

Date: 2007-03-28 05:57 pm (UTC)
From: [identity profile] stiver-rus.livejournal.com
Варианта два: синхронизация с внешними источниками (оператор, сервер) и предположения на основе региона выпуска/работы и действующего на момент выпуска законодательства. Например известно, что в Европе и России переход на летнее время осуществляется в последнее воскресенье марта.

Второй вариант часто приводит к неправильным результатам. Всем желающим вычислить момент перевода часов на 20 лет вперед - пример: меньше двух лет назад в США решением конгресса перевод часов был передвинут на пару недель. Сильно завидую умению предугадывать решения законодательных органов с таким опережением :))

Date: 2007-03-28 09:22 pm (UTC)
From: [identity profile] shadow-panther.livejournal.com
а как телефон узнает какой сегодня день недели? тоже заложено на *дцать лет вперед?

Date: 2007-03-29 07:02 am (UTC)
From: [identity profile] vovanium.livejournal.com
День недели есть отстаток от деления на семь количества дней, прошедших с любого понедельника, плюс один. Операции остатка от деления и сложения таки да, заложены эдак на 4 млрд суток вперёд. :-)
From: [identity profile] vovanium.livejournal.com
Программа по количеству дней, прошедших с 1 марта 1 года до н. э. по григорианскому календарю определяет дату, день недели, и летнее ли время. Работает как минимум ближайшие несколько тысячелетий. Обратное предобразование (даты в счётчик дней) тоже не составляет труда. Я думаю, становится понятно, что ни «закладывать на десять лет вперёд», ни «получать из сети» ничего не нужно.
#include <stdlib.h>
#include <stdio.h>

#define DAYS1Y 365
#define DAYS4Y (365*4+1)
#define DAYS100Y (DAYS4Y*25-1)
#define DAYS400Y (DAYS100Y*4+1)
#define GVC (31+29) /* смещение на 1 марта 0 года (1 г до н. э.)*/

char monthnames[13][4] = {"нул", "янв", "фев", "мар", "апр", "май", "июн", "июл", "авг", "сен", "окт", "ноя", "дек"};

char weekdaynames[8][3] = {"не", "пн", "вт", "ср", "чт", "пт", "сб", "вс"};

int main(int argc, char *argv[]) {
	int date = atoi(argv[1]); /* кол-во дней от 1 марта 0 года по юлианскому календарю */
	int year;    /* год */
	int month;   /* месяц */
	int day;     /* день месяца */
	int weekday; /* день недели */
	int week;    /* неделя */
	int dst;     /* летнее время */
	int leap;    /* високосный год */
	int d;       /* день в году */
	int x;
	
	d = date;
	
	weekday = (date+2)%7+1;

	x = d/DAYS400Y; year  = x*400; d -= x*DAYS400Y; /* 400-летний високосный цикл */
	x = d/DAYS100Y; year += x*100; d -= x*DAYS100Y; /* 100-летний високосный цикл */
	x = d/DAYS4Y;   year += x*4;   d -= x*DAYS4Y;   /* 4-летний високосный цикл */
	x = d/DAYS1Y;   year += x;     d -= x*DAYS1Y;   /* годовой цикл */
		
	month = (d*5-3)/153; 	/* аппроксимация 31 30 31 30 31 31 30 31 30 31 31 28+ */
	day = d - (month*153+3)/5 + 1;

	month += 3;
	d = d+31+28;
	if(month>12) year ++, month -= 12, d -= DAYS1Y;
	
	if(year%4==0 && year%100!=0 || year%400==0) leap = 1; else leap = 0;
	if(month>2) d += leap;
	
	week = (d-weekday+1)/7;
	
	dst = month>3 && month<=10;
	if(month==3 || month==10)
	  if(day-weekday>=25 || weekday==7 && day>=25) dst = !dst;
	  
	printf("%d-%s-%d, неделя: %d, %s, день года: %d, летнее время: %d\n", day, monthnames[month], year, week, weekdaynames[weekday], d, dst);
	return 0;
}

Date: 2007-03-29 08:55 am (UTC)
From: [identity profile] vovanium.livejournal.com
Что касается определения региона перевода часов, то, насколько я знаю, регион выставляется вручную, если, конечно, в устройстве эта функция есть. У меня в SonyEricsson есть вна выбор три региона — Европа, северный и южный.