The problem with the Do Not Disturb system could be related to the way the system was designed

  You all know that the Do Not Disturb system in iOS did not work for many users on the first day of this year, and yesterday I told you that we will only be able to use it again from January 7. Apple did not say why the system stopped working properly, it only told us when everything will return to normal, but those from Macworld have a possible explanation. They claim that the way the source code of the system was thought generates a problem of functioning on the first day of a calendar year, all having to do with the way the date was set using the ISO system.

Now, to programmers who've done a lot of work with date and time handling (like me; I write airline flight systems for a living, which require a lot of heavy timezone math) "it's broken during something like the first week of the year" immediately suggests a moderately obscure problem related to the ISO week data. This is a slightly weird definition of the year that you get from many data manipulation libraries by specifying that you want the year as "YYYY", as opposed to the more common "yyyy".

So, for 2012, the 1st-6th of January will show as being part of 2012 if the developer specifies "YYYY" in his or her date string, rather than being part of 2013. This means that when DND automatically switches on, it will have a calculated switch off date of sometime in 2012, which is now in the past so it will never turn off. I once made this mistake in my own code, as it's very easy to type "YYYY" instead of "yyyy"; it seems some nameless Apple engineer has done the same in iOS's Do Not Disturb function, but only in the automatic switch off time, not the switch on time part. In my case, the problem was caught in automated testing and never went live. The Apple engineer has been less fortunate.

  You can find the entire explanation at Macworld, if you are sure you will understand it and you need it in any way.

UPDATE: Macworld claims that their explanations are wrong, so ignore them.