Serge-bay
Для тех кто не знаком со схемотехникой расскажу немного.
Есть так называемые микросхемы RTC - real time clock. Собственно календарь находится в этой микросхеме (или её аналоге на кристалле микроЭВМ), чтобы при проектировании микропроцессорных систем программисту не надо было тратить силы и память программ на пересчет времени туда/сюда, учитывание високосных годов и т.д. и т.п.
Короче микросхема RTC отдает время и дату в привычном человеку виде, т.е. год, месяц, день, часы, минуты, секунды отдельно. Эта же микруха отвечает за переход месяца, года и т.д. В итоге ЛЕНИВОМУ программисту даже не надо заморачиваться. Тупо считывать дату/время из портов микрухи и полученные цифры выводить на экран, что и делается во всех поделках Fx00.
И это четко видно, т.к. дата и время, когда они сама по себе (девайсы без ГПС, на GS600 после того как спутники поймалмсь, время выставили и больше не трогают), тикают правильно, ибо берется готовыми из микрухи. А вот когда дату исправляют, точнее выставляют полученные из GPS данные, то и случается глюк. Кстати, это так же подтверждает, что часы всегда равны нулю в баговых ситуациях. В RTC прописывают либо -1, -2, либо 24, 25... часов, а RTC это переваривает, но именно как железка. Тупо выставляет неправильные параметры нуль часов, тем самым приводя дату/время к допустимом значениям.
У RTC есть офигенный плюс: схемотехника отработана годами, календари не сбоят, сама по себе очень дуракоустойчивое изделие. Когда делаешь девайс на микроконтроллере у которого 8 КИЛОБАЙТ памяти под код, то очень удобно.
mtsblogs
Ага. Одна строчка. Именно так китайцы и сделали. И забыли об этом.
Ты почти угадал, только забыл, что следующий день может оказаться в новом месяце, новом году и т.д. А это уже не пара строчек. При этом не забывай, что еще есть високосные года, когда наступление 29 февраля не означает необходимости перехода на март месяц.
Опять же для перехода в обратном направлении, т.е. когда оффсет GMT отрицательный (это в Америке) тоже может потребоваться перейти на предыдущий день, месяц, год. Опять же в 2012 году перед 1 марта будет 29 февраля, а в 2011 только 28.
С таким китайский мозг среднего "разработчика" уже не справляется. Он только может скопировать сэмп из референса и обозвать это готовым изделием. Ога.