| 
 date() и часы на компьютере показывают разные значения Всем привет!  По сути вопрос в теме. Если более подробно, то: вывожу время на странице (в браузере) с помощью date(), весь код часов: 
function SimpleClock()
{
    //создаем объект с текущей датой и временем
    var tekDate = new Date();
    //получаем из объекта часы, минуты и секунды
    var hour = tekDate.getHours();
    var minute = tekDate.getMinutes();
    var seconds = tekDate.getSeconds();
    //определ¤ем день недели
	var now = new Date();
	var dayNames = new Array("Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота");
	var now = new Date();
	var textout;
	var month = now.getMonth();
	var date = now.getDate();
	textout = date;
	if (month==0) textout+=" Января";
	if (month==1) textout+=" февраля";
	if (month==2) textout+=" марта";
	if (month==3) textout+=" апреля";
	if (month==4) textout+=" мая";
	if (month==5) textout+=" июня";
	if (month==6) textout+=" июля";
	if (month==7) textout+=" августа";
	if (month==8) textout+=" сентября";
	if (month==9) textout+=" октября";
	if (month==10) textout+=" ноября";
	if (month==11) textout+=" декабря";
    //дл¤ того чтобы минуты и секунды до 10 отображались корректно с нулем
    minute=((minute < 10) ? "0" : "") + minute;
    seconds =((seconds < 10) ? "0" : "") + seconds;
    //смотрим чтобы часы не переваливали за 24 
    hour=(hour > 24) ? hour-24 : hour;
    hour=(hour == 0) ? 0 : hour;
    //задаем окончательное значение времени
    var clock = hour + ":" + minute + ":" + seconds;
    //отрисовываем врем¤ на странице
    if(clock != document.getElementById('idClock').innerHTML){ 
			$("#idDate").html(textout+" "+now.getFullYear()+" <br><font size='-1' color='#999'>"+dayNames[now.getDay()]+"</font>");
			document.getElementById('idClock').innerHTML = clock;
			if(month<12){month=month+1;}
			if(month<10){month="0"+month;}
			if(date<10){date="0"+date;}
			$("#data_klient").val(now.getFullYear()+"-"+month+"-"+date+" "+clock);
	}
	//выполн¤ем все это каждую секунду
    timer = setTimeout("SimpleClock()",1000);
}
Далее отправляю эти данные аяксом (по событию) на сервер, просто перекидываю и записываю в БД. И всё работает как надо и никаких проблем. Но появился пользователь который заметил что в БД записывается время на один час меньше чем показывают его часы на компьютере. Скажите как такое может произойти? Откуда берет своё значение объект date? | 
| 
 Цитата: 
 | 
| 
 Цитата: 
 Но пользователь присылает скриншот экрана с часами, и временем которое записалось в БД, и в БД разница на один час меньше. Как такое может произойти? | 
| 
 Цитата: 
 | 
| 
 Цитата: 
 Может такое быть то браузер показывает одно время а часы компьютера другое? И из за чего такое может быть? | 
| 
 Цитата: 
 | 
| 
 Я не знаю конфигурацию вашего сервера, но у БД свои настройки системного времени. Но как бы то ни было, хостер никогда не установит разное время для сервера и БД. Системное время сервера в базу запишется только тогда, когда вы будет использовать функции базы, например NOW() в MySQL. Время может изменится также если не учитывать переход на летнее время, то есть у нас его нет, а у кого-то есть и при этом клиент работает по времени сервера. Но у вас в базу пишется локальное время клиента, и если оно выводится из базы без преобразований (не используется как временная метка в JS сценариях на клиенте или не подлежит изменению серверным скриптом), то для этого клиента оно будет таким каким записано в базе. | 
| 
 laimas, спасибо! Но БД на моем сервере здесь не причем. Я тупо записываю то время которое присылает клиент. То есть, если от клиента я получаю такое время: 2018-11-28 17:15:18 то я его таким и записываю.  Проблема здесь в другом. Пользователь утверждает что то время которое выводится у него на странице (которое я ему вывожу функцией date() в его-же браузере) показывает время на один час меньше чем показывают его часы на компьютере (системные часы в нижнем углу). Такое вообще возможно? Понятное дело что я проверяю на своем компьютере и не только, и такого не наблюдаю. Но это не означает что такое не может быть, или означает? | 
| 
 arkadii_parovozov, значит нужно копать глубже, C# .NET форуме попробуйте поспрашивать | 
| 
 Если в базу пишется 2018-11-28 17:15:18, которое прислал клиент, извлекается и выводится ему же, например сразу, то разница может быть в секундах или минутах так как и время не стоит на месте, плюс время на запрос/ответ. | 
| 
 j0hnik, а причем тут .NET и C#? | 
| 
 arkadii_parovozov, как дату из бд на страницу выводите? | 
| 
 laimas, мб с настройками винды как то связано. | 
| 
 Цитата: 
 | 
| 
 laimas, в его js коде нет ничего что бы переводило время на час, там более проблема у одного человека, поэтому и такой вывод. | 
| 
 Цитата: 
 | 
| 
 Цитата: 
 | 
| 
 Вложений: 1 laimas, j0hnik правильно мою мысль уловил. Суть в том что до БД дело не доходит, разница во времени у самого клиента (как он утверждает), типа на экране часы тикают и показывают одно время на на системных часах тикает время с один часом разницы. Вот скрин: в верхнем правом углу время которое я вывожу js (текущее время сервера), а в правом нижнем углу время системы | 
| 
 Nexus, Rise, j0hnik, laimas, посмотрите это сообщение: https://javascript.ru/forum/490003-post19.html | 
| 
 Цитата: 
 | 
| 
 Цитата: 
 Хотите сказать, то ваш таймер (JS) берет время с учетом/без летнего времени? Нет у браузера и JS своего времени. | 
| 
 Вложений: 1 Чтобы не создавать новую тему, попробую сформулировать вопрос заново: Почему объект Date() показывает время на один час меньше чем отображается в системных часах компьютера? Вот скрин: | 
| 
 Цитата: 
 | 
| 
 Цитата: 
 
<div id="tm"></div>
<script>
setTimeout(function run() {
  document.getElementById('tm').innerHTML = new Date();
  setTimeout(run, 1000)
}, 1000);
</script>
Показано время и смещение часового пояса. Разрешите в настройках переход на летнее время, что таймер и системные часы будут отображать разное время? | 
| 
 Rise, Вы специально уводите тему в сторону? Вывожу я данные часов здесь:  
document.getElementById('idClock').innerHTML = clock
а в таком формате: 
$("#data_klient").val(now.getFullYear()+"-"+month+"-"+date+" "+clock);
я отправляю данные в БД. Но не о передаче данных идет речь. Речь идет о том почему clock в браузере один а в системе другой? | 
| 
 laimas, если у вас есть решение, напишите! не стесняйтесь если дело не в браузере надо ковыряться в ОС | 
| 
 j0hnik, а вы встречали браузер или ОС, в котором бы JS работал со временем отличным от системного? | 
| 
 laimas, нет не видел ТС наё@@@@ет? | 
| 
 Вложений: 1 Rise, там <br> стоит. На скрине он получается выше, я его замазал, так как разница только в одном часу. Но если имеет значение, то полный вывод такой: | 
| 
 arkadii_parovozov, откуда клиент? | 
| 
 laimas, Москва, но точный адрес не скажу )) j0hnik, вот мне просто делать больше нехера как строчить тут сообщения. Я естественно кошу на ОС, но это нужно как-то обосновать, а не просто отмахнутся, типа: ничего не знаю это ваши проблемы... | 
| 
 И не надо адреса. Значит не должно быть у него перехода на летнее время, а на час, значит только это может дать сдвиг у нас в стране. Но когда часы переводятся на час, переводится и системное время. Можете у себя попробовать простой вывод таймером new Date(), но с учетом перехода на летнее время. Для этого зайдите в настройки дата/время и выберите любой часовой пояс отличный от наших по стране. При этом в настройках будет доступен флажок разрешающий переход на летнее время, он должен быть установлен. Что будут показывать системные часы и часы таймера (если что, то систему перезапустите)? После вернете свой часовой пояс. | 
| 
 Rise, я уже переформулировал вопрос: Почему объект Date() показывает время на один час меньше чем отображается в системных часах компьютера?  Здесь нет ни слова о серверном времени. Не сбивайте людей с толку. | 
| 
 laimas, спасибо! Выбрал другую страну, разница в браузере и в системных часах стало в 10 часов.  Теперь другой вопрос, что делает этот флажок что js расходится с системными часами? | 
| 
 А вот это неожиданность. :) В JS для объекта Date нет метода получения времени с учетом перехода на летнее/зимнее время. Значит получается, что корректируются системные часы, а не время (таймер), а JS работает с системным временем (таймером). Скажите своему клиенту, что он лох и нужно ему просто запретить переход на летнее/зимнее время, ибо он до сих пор живет по Керенскому. :) | 
| 
 laimas, причем даже независимо от того в каком положении флажок (переходить/не переходить) все равно часы показывают разное время в других часовых поясах (где возможен переход).  Это возможно преодолеть на уровне js? И если системное время одно, то почему js показывает одно а системные часы другое? | 
| 
 laimas, походу это все "адская 10-ка" уточню у клиента что у него там. У меня 10-ка стоит, и когда меняю пояса, то у некоторых зон опция перехода отсутствует, и если я выбираю эти зоны, то время везде одинаково. А если выбираю зоны где флажок активен, то время разное (независимо от положения флажка). Оказывается нет. Просто если зоны разные, то время отличается. Но механизм изврата ОС я понял. Они тупо выводят в часах измененное время, а системное оставляют неизменным. Интересно с какой целью они так сделали... | 
| 
 Нет, проверять надо именно переход на летнее время. А разница которую видите вы объясняется другим фактором. Допустим у вас часовой пояс  +300, а вы его изменили на часовой пояс +600. Если выводить new Date(), то можно заметить, что ваши часы будут отображать прежний часовой пояс +300. Я полагаю, что это так, а значит вы не перезагрузили систему. Выбрав другой часовой пояс, в котором будут доступен переход на летнее время, перезапустите систему (или не запускайте скрипт до смены часового пояса), и проверяйте часы только при разрешении и запрете перехода. | 
| 
 Цитата: 
 | 
| 
 Rise, (UTC+04:00) Баку Разница между js и системы в один час. Изменение перехода на лето отключено. По умолчанию у меня стоит (UTC+03:00) Москва, Санкт-Петербург, Волгоград | 
| Часовой пояс GMT +3, время: 12:31. |