Dynamics CRM stores all date time values in UTC-Format.
All data which is entered with the web front-end gets automatically converted to UTC when stored and converted back to the user timezone when read.
If you are using the Dynamics CRM Outlook Client, the timezone settings of Windows are used. If you use the web-client, it uses the timezone setting in your personal options. Make sure it is correct.
SDK
The SDK always use UTC for dates and does not convert them in any way. It is your responsibility to convert the data in an appropriate way. However, the CrmDateTime class contains some useful methods and properties for that.
Reports
Make sure that you only access the FilteredViews (for example FilteredAccount, which is btw the only supported use of the database). Date fields are automatically converted into the right timezone (according to the user settings). If you need to access the raw value, it is available as column with utc postfix (createdon -> createdonutc). To format date values according to the user/system settings you can access these settings also in reports. See "Formatting Content"