A: You probably created a calculated column with something like the following:

                              First day of month:                              =DATE(YEAR(somecolumn),MONTH(somecolumn),1)                                      Last day of month:                              =DATE(YEAR(somecolumn),MONTH(somecolumn)+1,1)-1

When you enter a date, you are actually setting a date and a time. So if you set the date with your calculation to 12/1/2011, you have actually created a date and time of 12/1/2011 12:00 AM.

When your users set their preferences to a time zone one hour before or after your time zone, they will then see 12/1/2011 1:00 AM or 11/30/2011 11:00 PM.

One solution is to fudge the date a bit by adding a few hours +/- to your calculation. Try the following (where .5 = 12 hours):

                              =DATE(YEAR(somecolumn + .5),MONTH(somecolumn + .5),1)                                      =DATE(YEAR(somecolumn - .5),MONTH(somecolumn - .5)+1,1)-1

If you are international and need to support all time zones, then the above will not work for the time zones +12 or -12 hours from your time zone.