Мне нужно построить функцию, которая возвращает «1», если это летнее время, или «0» для зимы.Получить летнее время в C++
Просто хотел попросить алгоритм для начала или с чего начать.
Мне нужно построить функцию, которая возвращает «1», если это летнее время, или «0» для зимы.Получить летнее время в C++
Просто хотел попросить алгоритм для начала или с чего начать.
Для окон.
Вы можете использовать _SYSTEMTIME
, чтобы получить текущий месяц/дату (локальное или системное время). Тогда, если это падение в диапазоне для дневного сбережения, вы можете вернуть да, у вас есть летнее время, а еще нет. (То есть сделать свою собственную простую функция)
Пример использование _SYSTEMTIME
и документы here.
(a) Вы, вероятно, должны прямо указывать, что это для Windows, и (б) я не понимаю, как вы получаете, действует ли летнее время или нет из возвращаемой им информации. Возможно, у вас есть «... а затем происходит магия ...», «если она попадает в диапазон для дневного сбережения»; как вы знаете, действует ли летнее сбережение или нет? –
@ JonathanLeffler Отмечено. И я предполагаю, что программист будет знать, когда произойдет дневное сбережение времени, поэтому из какого месяца/дня в другой месяц/день они просто проверяют, находится ли дата, которую они сейчас получают, в этом диапазоне. – Annabelle
Знаете ли вы, когда происходят изменения - в Моррокко, Грузия (страна, а не США), Китай, Япония, Австралия, Чили, Аргентина? Вы знаете, как часто правила меняются в какой-то стране каждый год? Для этого есть список рассылки, и нынешняя версия для этого года - скромная версия «2015f», я полагаю, но она должна была выпустить «2009», так что в этом году было 19 выпусков. И часто релиз связывает изменения для нескольких стран. Ожидание, что программист «знает» не является выигрышной стратегией. –
Летнее время где? –
Одним из возможных вариантов является комбинация 'time()' и 'localtime()' от ''. Это работает на C, а также на C++. Является ли это хорошим вариантом, это другое дело, но это не так. Это будет сообщать о состоянии зимы против летнего времени в течение данного времени, более или менее. –
Алгоритм, который * в основном * работает по всему миру: 1) Получите смещения за 1 января и 1 июля. Если они одинаковы, DST неприменим, верните '0'. 2) Получите * текущее * смещение. 3) Если текущее смещение равно * меньше * двух смещений, тогда действует * стандартное время *, возвращает '0', иначе действует DST, поэтому возвращаем' 1'. Это справедливо, за исключением случаев, когда смещения изменяются по причинам, отличным от DST (например, изменения с базовым смещением). –