Как найти разницу между 2 NaiveDateTimes?

Я использую chrono. У меня есть now() и еще несколько NaiveDateTime. Как я могу найти разницу между ними?

let now = Utc::now().naive_utc();
let dt1 = get_my_naive_datetime();

person Kurama    schedule 18.01.2018    source источник


Ответы (1)


Используйте NaiveDateTime::signed_duration_since:

println!("{:?}", dt1.signed_duration_since(now))

(детская площадка)

Он возвращает Duration, который имеет &self методы, дайте любые единицы, которые вам нравятся, например. dt1.signed_duration_since(now).num_days().

person trentcl    schedule 18.01.2018
comment
как получить это в днях, часах, минутах? - person Kurama; 18.01.2018
comment
@Курама, о чем вопрос? Этот метод возвращает объект Duration, который имеет все нужные вам методы — для получения дней, часов и минут. Просто откройте эту ссылку, и вы увидите. - person Victor Polevoy; 18.01.2018
comment
Или вы можете просто использовать вычитание, чтобы получить Duration из двух экземпляров NaiveDateTime: now-dt1 - person Jmb; 18.01.2018
comment
@Jmb Это была моя первая мысль, но Sub<NaiveDateTime> не реализовано для NaiveDateTime. - person trentcl; 18.01.2018
comment
@trentcl ой, мой плохой, я слишком быстро прочитал документ: я увидел, что Sub<Something> был реализован для NaiveDateTime, и я не обратил внимания на то, что на самом деле было Something (в данном случае FixedOffset) - person Jmb; 18.01.2018
comment
@Jmb, что даст другую длительность. Что я буду с ним делать? - person Kurama; 18.01.2018