When is yesterday really today
Over the last few weeks we’ve released huge updates to 1Password across all of our platforms. Along with some awesome new features and improvements, these updates contained a fix to a pretty important, and to be honest, rather embarrassing date problem. You see, there were some cases where you would find dates in 1Password shifting by a day if you travelled to a different time zone.
For example: Wendy enters her birthday (January 24, 1984) into her Passport item in 1Password. When she travels West to visit her brother, she notices that the birthdate listed in her Passport item is now January 23, 1984.
To understand why this is happening, we have to take a look at how 1Password stores dates.
Dates as timestamps
1Password uses date fields in a number of items. These date fields fall into one of two different formats; Month/Year fields like a Credit Card expiry, or full date fields (Day/Month/Year) like a birthday in a Passport. Month/Year fields are stored as just that, a month and a year, and as a result weren’t a problem. Date fields however were stored as seconds since midnight 1970 UTC.
For example: Wendy’s birthdate (Jan 24, 1984) is stored in her 1Password database as 443750400 seconds since midnight 1970 UTC.
This in itself is not a problem, however we chose to use the native date picker in Mac and iOS to help users when entering dates, but had not set the time zone for these dates to UTC. This meant that dates were saved using the local time zone. When displaying the date we would adjust for the time zone and all would appear to be fine… as long as you stayed in the same time zone. Unfortunately few of us stay in one place in this day and age. When travelling into a different time zone it was quite possible that you would find your date fields shifted one day earlier.
UTC moving forward
To ensure that this doesn’t happen for newly created dates we have set the time zone to UTC when both setting and showing dates. This way we never need to adjust to the local time zone and the date will always show up properly.
What about old dates?
Any dates that have been entered into 1Password on Mac or iOS prior to version 5.3 have been created with the local time zone setting. When we made the change to the UTC time zone, we made the decision not to make any changes to existing dates. Displaying or converting them to UTC would be incorrect in most cases and could cause further confusion, so your existing dates will continue to be displayed using the local time zone setting. For most people, most of the time, this will display correctly. However it is possible that by moving time zones you might see these older dates appear off by one day. If you wish to correct these dates to the new UTC time zone setting, simply edit the date field and save the changes. This will force a change to UTC and ensure that your dates display correctly, whatever globetrotting you do.
Travel with confidence
While most of you have never encountered this issue, I would like to take this opportunity to apologize to those who did. We appreciate your assistance in reporting and helping us track this bug. Rest assured that our fix will keep any new dates rock solid from now on regardless of where your travels take you.
If you have any questions about this fix, please let us know in the comments or in our forums.