Что означает ParseError(NotEnough) от rust-chrono?
Я использую rust-chrono
и я пытаюсь разобрать дату, как это:
extern crate chrono;
use chrono::*;
fn main() {
let date_str = "2013-02-14 15:41:07";
let date = DateTime::parse_from_str(&date_str, "%Y-%m-%d %H:%M:%S");
match date {
Ok(v) => println!("{:?}", v),
Err(e) => println!("{:?}", e)
}
}
И это вывод:
ParseError(NotEnough)
Что это значит? Не хватает чего? Должен ли я использовать какую-то другую библиотеку?
2 ответа
Вы должны использовать
UTC.datetime_from_str(&date_str, "%Y-%m-%d %H:%M:%S");
Подобно:
extern crate chrono;
use chrono::*;
fn main() {
let date_str = "2013-02-14 15:41:07";
let date = UTC.datetime_from_str(&date_str, "%Y-%m-%d %H:%M:%S");
match date {
Ok(v) => println!("{:?}", v),
Err(e) => println!("{:?}", e)
}
}
Типы, которые реализуют Error
иметь более удобные сообщения об ошибках через Error::description
или же Display
:
Err(e) => println!("{}", e)
Это печатает:
ввода недостаточно для уникальной даты и времени
Предположительно, это потому, что вы не указали часовой пояс, поэтому время неоднозначно.
Ошибка ParseError(NotEnough) появляется, когда недостаточно информации для заполнения всего объекта. Например, отсутствует дата, время или часовой пояс.
В приведенном выше примере отсутствует часовой пояс. Таким образом, мы можем сохранить его в NaiveDateTime. Этот объект не хранит часовой пояс:
let naive_datetime = NaiveDateTime::parse_from_str(date_str, "%Y-%m-%d %H:%M:%S").unwrap();
Для получения дополнительной информации: /questions/50545499/string-datyi-sintaksicheskogo-analiza-rust-chrono-parseerror-notenough-i-parseer/50545504#50545504