Phone changes timezone itself My phone is Huawei LUA-L21, here's the log from logcat:

D/WifiStateMachine(  876): onReceive, action:mediatek.intent.action.LOCATED_PLMN_CHANGED
E/WifiStateMachine(  876):  InitialState (when=-1ms what=131225!M_CMD_UPDATE_COUNTRY_CODE{ when=-1ms what=131225 obj=ru target=com.android.internal.util.StateMachine$SmHandler obj=ru } 0 0
E/WifiStateMachine(  876):  DefaultState (when=-2ms what=131225!M_CMD_UPDATE_COUNTRY_CODE{ when=-2ms what=131225 obj=ru target=com.android.internal.util.StateMachine$SmHandler obj=ru } 0 0
D/ccci_mdinit(0)(  265): save_timezone++
D/AlarmManagerService(  876): Kernel timezone updated to -180 minutes west of GMT
E/WifiStateMachine(  876):  InitialState (when=-2ms what=131152 arg1=36 arg2=1) !CMD_SET_COUNTRY_CODE 36 1 ru
E/WifiStateMachine(  876):  DefaultState (when=-3ms what=131152 arg1=36 arg2=1) !CMD_SET_COUNTRY_CODE 36 1 ru
D/Clock   ( 1137): onReceive : ACTION_TIMEZONE_CHANGED : java.util.GregorianCalendar[time=1468332368045,areFieldsSet=true,lenient=true,zone=Europe/Moscow,firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=12,DAY_OF_YEAR=194,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=6,SECOND=8,MILLISECOND=45,ZONE_OFFSET=10800000,DST_OFFSET=0]
D/Clock   ( 1137): TimeZone =libcore.util.ZoneInfo[id="Europe/Moscow",mRawOffset=10800000,mEarliestRawOffset=9079000,mUseDst=false,mDstSavings=3600000,transitions=77]
Fixed it by creating small application which restores timezone every time it changes.

GitHub: https://github.com/4ndv/tzfixer

APK: https://github.com/4ndv/tzfixer/releases/