Existe apenas uma função para que se possa obter a data e a hora. É a função chrono.
Para se obter os dados separadamente, existem os seguintes métodos:
No exemplo 1 abaixo obteremos o dia da semana e as horas. Para tal, utilizaremos a variável agora para armazenar data e hora.
| Arquivo data_hora/src/main.rs |
| use chrono::prelude::*; // DateTime, Local, etc. use chrono::{Datelike, Timelike}; // Para day(), month(), hour(), etc. fn main() { // Data e hora atual let agora: DateTime<Local> = Local::now(); let dia_do_mes = agora.day(); let dia_da_semana = agora.weekday().number_from_sunday() - 1; // agora vai de 0..=6 let mes = agora.month0(); // 0 = Janeiro let ano = agora.year(); let horas = agora.hour(); let minutos = agora.minute(); let segundos = agora.second(); // Dias da semana let semana = [ "Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", ]; let semana_atual = semana[dia_da_semana as usize]; // Meses let meses = [ "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro", ]; let mes_atual = meses[mes as usize]; println!("{}, {} de {} de {}", semana_atual, dia_do_mes, mes_atual, ano); println!("São: {} horas, {} minutos e {} segundos.", horas, minutos, segundos); } |
| Arquivo: Cargo.toml |
[package] [dependencies] |
| Resultado: |
C:\testerust> cargo new data_hora --bin PS C:\testerust\data_hora> target\debug\data_hora.exe |
exemplo 4: alterando a data
use chrono::NaiveDate;
fn main() {
let x_dia = 28;
let x_mes = 4; // Em Java seria 3
(Abril, pois começa em 0)
let x_ano = 1997;
// Em Rust os meses vão de 1..=12, diferente do Java
(0..11)
let data = NaiveDate::from_ymd_opt(x_ano, x_mes,
x_dia).unwrap();
println!("Data configurada: {}", data); // Saída:
1997-04-28
}
Você pode simplificar as datas veja:
Tanto pode usar esta forma quanto da outra.
| Arquivo data_hora/src/main.rs |
| use chrono::{Datelike, NaiveDate, Weekday}; fn main() { let x_dia = 28; let x_mes = 4; // Abril let x_ano = 1997; // Cria uma data (sem fuso horário) let data = NaiveDate::from_ymd_opt(x_ano, x_mes, x_dia).unwrap(); let dia_do_mes = data.day(); let dia_da_semana = data.weekday(); let mes = data.month(); let ano = data.year(); // Dias da semana (Java: 1=Domingo ... 7=Sábado) let semana = [ "", "Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", ]; let indice_semana = match dia_da_semana { Weekday::Sun => 1, Weekday::Mon => 2, Weekday::Tue => 3, Weekday::Wed => 4, Weekday::Thu => 5, Weekday::Fri => 6, Weekday::Sat => 7, }; let semana_atual = semana[indice_semana]; // Meses (Java: 0=Janeiro ... 11=Dezembro) let meses = [ "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro", ]; let mes_atual = meses[(mes - 1) as usize]; println!("{}, {} de {} de {}", semana_atual, dia_do_mes, mes_atual, ano); } |
| Arquivo: Cargo.toml |
[package] [dependencies] |
| Resultado: |
C:\testerust> cargo new data_hora --bin PS C:\testerust\data_hora> target\debug\data_hora.exe
|