关注我,学习Rust不迷路!!
在 Rust 中,比较两个日期的大小有多种方法。以下是列举的四种常见方法:
1. 使用 PartialOrd
trait:
bash
use chrono::prelude::*;
fn main() {
let date1 = NaiveDate::from_ymd(2022, 1, 1);
let date2 = NaiveDate::from_ymd(2022, 1, 10);
if date1 < date2 {
println!("date1 is less than date2");
} else if date1 > date2 {
println!("date1 is greater than date2");
} else {
println!("date1 is equal to date2");
}
}
2. 使用 Ord
trait:
bash
use chrono::prelude::*;
fn main() {
let date1 = NaiveDate::from_ymd(2022, 1, 1);
let date2 = NaiveDate::from_ymd(2022, 1, 10);
match date1.cmp(&date2) {
std::cmp::Ordering::Less => println!("date1 is less than date2"),
std::cmp::Ordering::Greater => println!("date1 is greater than date2"),
std::cmp::Ordering::Equal => println!("date1 is equal to date2"),
}
}
3. 使用 PartialOrd
和 Ord
trait 结合 PartialEq
和 Eq
trait:
bash
use chrono::prelude::*;
fn main() {
let date1 = NaiveDate::from_ymd(2022, 1, 1);
let date2 = NaiveDate::from_ymd(2022, 1, 10);
if date1.eq(&date2) {
println!("date1 is equal to date2");
} else if date1.ne(&date2) {
println!("date1 is not equal to date2");
} else if date1.lt(&date2) {
println!("date1 is less than date2");
} else if date1.le(&date2) {
println!("date1 is less than or equal to date2");
} else if date1.gt(&date2) {
println!("date1 is greater than date2");
} else if date1.ge(&date2) {
println!("date1 is greater than or equal to date2");
}
}
4. 使用 DateTime
类型的 timestamp
进行比较:
bash
use chrono::prelude::*;
fn main() {
let date1 = NaiveDate::from_ymd(2022, 1, 1);
let date2 = NaiveDate::from_ymd(2022, 1, 10);
let timestamp1 = date1.and_hms(0, 0, 0).timestamp();
let timestamp2 = date2.and_hms(0, 0, 0).timestamp();
if timestamp1 < timestamp2 {
println!("date1 is less than date2");
} else if timestamp1 > timestamp2 {
println!("date1 is greater than date2");
} else {
println!("date1 is equal to date2");
}
}
这些方法中,前两种使用 PartialOrd
和 Ord
trait 进行日期比较,第三种结合了 PartialEq
和 Eq
trait,而第四种方法使用 DateTime
类型的 timestamp
进行比较。