---
title: "Date/time best practices"
slug: "date-time-best-practices"
abstract: "Best practices for configuring date/time in multi-instance CMS solutions across different time zones."
---
# Date/time best practices

The following list describes the best practices for configuring date/times in multi-instance CMS solutions spread across different time zones.

- Avoid using local time. Do not use the DateTime.Now property, use DateTime.UtcNow instead.
- Use only the new methods of `Sitecore.DateUtil` class for date/time conversion operations.
- Convert date/time to universal time using the `ToUniversalTime` method of the `Sitecore.DateUtil` class, before saving date/time to the database.
- Sitecore applications and UI dialogs should display date/time values in the server time zone. You need to convert UTC date/time to server time using the `ToServerTime` method of the `Sitecore.DateUtil` class before displaying date/time values in the UI. This conversion can be done in application code or dialog box logic before the date/time values are assigned to UI controls.
- Use the methods of the `Sitecore.DateUtil` class for parsing strings to date/time and converting date/time to strings.
- When parsing a string to date/time, use `IsoDateToDateTime` or `ParseDateTime` methods of `Sitecore.DateUtil` class. The following overload of the `IsoDateToDateTime` method has the `treatLegacyDatesAsUtc` parameter that allows you to specify whether legacy dates should be treated as UTC dates:

    ```text
    public static DateTime IsoDateToDateTime([CanBeNull] string isoDate, DateTime defaultValue, bool treatLegacyDatesAsUtc)
    ```

- When converting date/time to string representation in ISO format, use the `ToIsoDate` method of the `Sitecore.DateUtil` class.
- When comparing two date/time values, make sure that they are both of the same kind. Results of a comparison of two date/time values with different formats will be wrong. Perform a conversion first to make sure that both values are in the same format.
- Keep in mind that the public API (such as created, updated dates of item) returns universal time, so the client code should handle universal time appropriately.
- When working with the date picker and time picker controls, make sure that the value assigned to the Value property of these controls is the server time ISO date. The `IsoDateToServerTimeIsoDate` method of the `Sitecore.DateUtil` class can be used to convert UTC ISO date to server time ISO date.
- When saving input from the date picker and time picker controls to the database, make sure that the date/time value selected in the control is converted to UTC before saving. The `IsoDateToUtcIsoDate` method of `Sitecore.DateUtil` class can be used to convert server time ISO date to UTC ISO date.
- Use the `Sitecore.Utc` and `Sitecore.ServerTime` attributes to set the `DateTime` properties. `DateTime` parameters and methods that return `DateTime` are handled in a specific Sitecore installation. These attributes provide additional information to developers about the expected kind of date/time.