Leaving aside the talk of new features, I would like to propose an initial set of changes that will squash the current bug caused by a change to the OS timezone without introducing any new features. New features can be added later on of course.
The goals are: -Prevent changes to the OS time zone from causing GnuCash problems. -Leave the file format syntactically unchanged. -Leave the file format backwards compatible. -Leave the door open for future time entry features by continuing to use timestamps internally. Here's how I propose this would work: 1. For backward compatibility, the current posting date format of "YYYY-MM-DD HH:MM:SS" followed by the current OS timezone at write time would not change. 2. When reading each transaction from a file, if the "HH:MM:SS" part is equal to "00:00:00" then the transaction is not bug affected and the YYYY-MM-DD part contains the date the originally entered in the register. 3. When reading a file, if the "HH:MM:SS" part is NOT equal to "00:00:00" then the transaction is bug affected and must be reviewed to determine the date the user originally entered in the register can be determined. In some cases GnuCash would need to ask the user some questions to determine how to do the adjustment, but in most cases I suspect it would not. (I won't go into the algorithm for the moment.) 3. Once the date originally entered in the register has been determined, GnuCash converts that date into a timestamp by imposing a default time of day of 12:00 (the actual time doesn't matter as long as it is fixed) and a fixed time zone of UTC. 4. Now that the file has been loaded, the user does whatever they want in the GUI, completely unaware of what time of day or time zone GnuCash is using internally. 5. When the file is saved, GnuCash converts the timestamp back into the originally entered date (which it can do because the time of day and time zone are fixed at 12:00 and UTC on all transactions). 6. GnuCash saves in the format "YYYY-MM-DD 00:00:00", followed by the current, OS-determined local time zone. The YYYY-MM-DD part contains is the originally entered date, . Unless I have miscalculated, this meets the four goals stated above. Comments? Cheers, Charles _______________________________________________ gnucash-devel mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-devel
