Выражение DateTimeExp Bixby является мощным и не только фиксирует дату, но и интервалы, например, «следующий март» или «между 1 и 15 марта».Когда вы используете DateTimeExpression, Bixby проанализирует ввод и установит Date, DateTime, DateInterval или DateTimeInterval.
Чтобы проанализировать значения из DateTimeExpression, вы должны проверить, какое поле было заполнено.Хороший пример кода для этого взят из примера Землетрясения в документации.В качестве примера землетрясения вы могли бы задать вопрос типа «Найти землетрясения, которые произошли 12 марта 1963 года» или «Найти землетрясения, которые произошли в марте 1963 года».Вот пример кода (из документов)
module.exports = function findEarthquakes(
where, dateTimeExpression, minMagnitude, classification
) {
var whenStart;
var whenEnd;
if (dateTimeExpression.date) {
whenStart = dates.ZonedDateTime.fromDate(dateTimeExpression.date);
whenEnd = whenStart.withHour(23).withMinute(59).withSecond(59);
}
else if (dateTimeExpression.dateInterval) {
whenStart = dates.ZonedDateTime.of(
dateTimeExpression.dateInterval.start.year,
dateTimeExpression.dateInterval.start.month,
dateTimeExpression.dateInterval.start.day);
whenEnd = dates.ZonedDateTime.of(
dateTimeExpression.dateInterval.end.year,
dateTimeExpression.dateInterval.end.month,
dateTimeExpression.dateInterval.end.day,
23, 59, 59);
}
else if (dateTimeExpression.dateTimeInterval) {
whenStart = dates.ZonedDateTime.of(
dateTimeExpression.dateTimeInterval.start.year,
dateTimeExpression.dateTimeInterval.start.month,
dateTimeExpression.dateTimeInterval.start.day,
dateTimeExpression.dateTimeInterval.start.hour,
dateTimeExpression.dateTimeInterval.start.minute,
dateTimeExpression.dateTimeInterval.start.second);
whenEnd = dates.ZonedDateTime.of(
dateTimeExpression.dateTimeInterval.end.year,
dateTimeExpression.dateTimeInterval.end.month,
dateTimeExpression.dateTimeInterval.end.day,
dateTimeExpression.dateTimeInterval.end.hour,
dateTimeExpression.dateTimeInterval.end.minute,
dateTimeExpression.dateTimeInterval.end.second);
}
var start = whenStart.toIsoString();
var end = whenEnd.toIsoString();
// code continues...
}
В приведенном выше примере начало и конец - строки даты ISO.Если пользователь указал только одну дату, конец устанавливается как конец этого дня.