data_faking/data/datetime/
datetime_naive.rs

1use chrono::{NaiveDateTime};
2use wasm_bindgen::prelude::*;
3
4use super::date_naive::gen_date_naive;
5use super::time_naive::{gen_time_naive, gen_time_naive_micro, gen_time_naive_milli, gen_time_naive_nano};
6
7const DATETIME_FORMAT: &str = "%Y-%m-%d";
8const DATETIME_FORMAT_MILLI: &str = "%Y-%m-%d %H:%M:%S%.3f";
9const DATETIME_FORMAT_MICRO: &str = "%Y-%m-%d %H:%M:%S%.6f";
10const DATETIME_FORMAT_NANO: &str = "%Y-%m-%d %H:%M:%S%.9f";
11
12#[wasm_bindgen]
13pub fn datetime_naive() -> String {
14  let ndt = gen_datetime_naive();
15  if ndt.is_none() {
16    return "".to_string();
17  }
18  ndt.unwrap().format(DATETIME_FORMAT).to_string()
19}
20
21#[wasm_bindgen]
22pub fn datetime_naive_milli() -> String {
23  let ndt = gen_datetime_naive_milli();
24  if ndt.is_none() {
25    return "".to_string();
26  }
27  ndt.unwrap().format(DATETIME_FORMAT_MILLI).to_string()
28}
29
30#[wasm_bindgen]
31pub fn datetime_naive_micro() -> String {
32  let ndt = gen_datetime_naive_micro();
33  if ndt.is_none() {
34    return "".to_string();
35  }
36  ndt.unwrap().format(DATETIME_FORMAT_MICRO).to_string()
37}
38
39#[wasm_bindgen]
40pub fn datetime_naive_nano() -> String {
41  let ndt = gen_datetime_naive_nano();
42  if ndt.is_none() {
43    return "".to_string();
44  }
45  ndt.unwrap().format(DATETIME_FORMAT_NANO).to_string()
46}
47
48pub fn gen_datetime_naive() -> Option<NaiveDateTime> {
49  let date = gen_date_naive();
50  if date.is_none() {
51    return None;
52  }
53
54  let time = gen_time_naive();
55  if time.is_none() {
56    return None;
57  }
58
59  Some(NaiveDateTime::new(date.unwrap(), time.unwrap()))
60}
61
62pub fn gen_datetime_naive_milli() -> Option<NaiveDateTime> {
63  let date = gen_date_naive();
64  if date.is_none() {
65    return None;
66  }
67
68  let time = gen_time_naive_milli();
69  if time.is_none() {
70    return None;
71  }
72  
73  Some(NaiveDateTime::new(date.unwrap(), time.unwrap()))
74}
75
76pub fn gen_datetime_naive_micro() -> Option<NaiveDateTime> {
77  let date = gen_date_naive();
78  if date.is_none() {
79    return None;
80  }
81
82  let time = gen_time_naive_micro();
83  if time.is_none() {
84    return None;
85  }
86
87  Some(NaiveDateTime::new(date.unwrap(), time.unwrap()))
88}
89
90pub fn gen_datetime_naive_nano() -> Option<NaiveDateTime> {
91  let date = gen_date_naive();
92  if date.is_none() {
93    return None;
94  }
95
96  let time = gen_time_naive_nano();
97  if time.is_none() {
98    return None;
99  }
100
101  Some(NaiveDateTime::new(date.unwrap(), time.unwrap()))
102}