The datetime in salesforce is always stored in GMT (UTC). The time is corrected to the users time zone when displaying it on the UI. The time is only corrected in the UI, so you need to make the adjustment yourself for formula fields.
Datetime input field cast to another timezone
http://www.salesforce.com/us/developer/docs/officetoolkit/Content/sforce_api_calls_soql_select_dateformats.htm
You need to adjust for your own time zone in your formula to account for this. In my formula fields, since I am in EST, I have to adjust all the datetimes by 5 hours to make sure I have the correct values. I just do this in a long case statement like below. this formula finds the hour of the day that a case was created, notice I have to adjust each time by 5 hours to make it work
TEXT(CASE(VALUE(LEFT(RIGHT(text(CreatedDate),FIND(" ", TEXT( CreatedDate ))-2),2)),
00,19,
01,20,
02,21,
03,22,
04,23,
05,00,
06,01,
07,02,
08,03,
09,04,
10,05,
11,06,
12,07,
13,08,
14,09,
15,10,
16,11,
17,12,
18,13,
19,14,
20,15,
21,16,
22,17,
23,18,
00))
DATEVALUE() Returns a year, month, day in GMT time value while DATE() returns a year, month, day based on a User's time zone. It would appear that's the cause of your issue. The formula is evaluated based on the context of the running user.
DateTime values are stored in the Salesforce Database in GMT time and they're displayed to a user in the user's local time zone per the time zone settings in their User profile. What YOU see when looking at them is based on YOUR User Profile time zone, not the User who scheduled the Event. Perhaps if you check the event date times in GMT and compare the DATEVALUES, you may discover that they're being converted properly. You may also want to check the User Profile settings where these discrepancies are being reported.
I say this because if someone with the wrong user Time Zone in their profile kicks off the workflow, the conversion to GMT will be made incorrectly and this error will propagate to all users when they view the change.
Best Answer
You can handle this in Apex like this: