Расчет разницы дат в Apex Salesforce: методы и примеры

Чтобы вычислить разницу между двумя датами в Apex Salesforce, вы можете использовать различные методы. В этой статье блога я объясню несколько подходов с примерами кода, которые вы можете использовать в своих проектах разработки Salesforce.

Метод 1: использование класса Date
Apex предоставляет класс Date, который позволяет выполнять вычисления с датами. Вы можете вычесть одну дату из другой, чтобы получить разницу в днях.

Date startDate = Date.parse('2022-01-01');
Date endDate = Date.parse('2022-01-10');
Integer daysDifference = startDate.daysBetween(endDate);
System.debug('Difference in days: ' + daysDifference);

Метод 2: использование класса DateTime
Если вам нужно вычислить разницу в часах, минутах или секундах вместе с днями, вы можете использовать класс DateTime.

DateTime startDateTime = DateTime.newInstanceGmt(2022, 1, 1, 0, 0, 0);
DateTime endDateTime = DateTime.newInstanceGmt(2022, 1, 1, 12, 0, 0);
Long secondsDifference = (endDateTime.getTime() - startDateTime.getTime()) / 1000;
System.debug('Difference in seconds: ' + secondsDifference);

Метод 3: использование класса Duration
Если вы хотите вычислить разницу между двумя значениями DateTimeи представить ее в структурированном виде, вы можете использовать Durationкласс.

DateTime startTime = DateTime.newInstanceGmt(2022, 1, 1, 0, 0, 0);
DateTime endTime = DateTime.newInstanceGmt(2022, 1, 1, 12, 0, 0);
Duration duration = startTime.time().timeBetween(endTime.time());
System.debug('Difference in hours: ' + duration.hours());
System.debug('Difference in minutes: ' + duration.minutes());
System.debug('Difference in seconds: ' + duration.seconds());

Метод 4. Использование поля формулы.
Если вы хотите вычислить разницу дат в объекте Salesforce, вы можете создать поле формулы, которое вычисляет разницу между двумя полями даты.

Date__c startDate;
Date__c endDate;
Formula__c = endDate - startDate;

В данном случае Date__cпредставляет поля даты начала и окончания, а Formula__c — поле формулы, в котором отображается разница между ними.

Метод 5. Использование класса BusinessHours
Если вы хотите вычислить разницу между двумя датами, исключая выходные и рабочие часы, вы можете использовать класс BusinessHours.

BusinessHours defaultBusinessHours = [SELECT Id FROM BusinessHours WHERE IsDefault = true];
DateTime startDate = DateTime.newInstanceGmt(2022, 1, 1, 0, 0, 0);
DateTime endDate = DateTime.newInstanceGmt(2022, 1, 10, 0, 0, 0);
Long businessHoursDifference = BusinessHours.diff(defaultBusinessHours.Id, startDate, endDate);
System.debug('Difference in business hours: ' + businessHoursDifference);

Теперь, когда вы изучили несколько методов расчета разницы дат в Apex Salesforce, вы можете выбрать тот, который лучше всего соответствует вашим потребностям в ваших проектах разработки.