Skip to main content

chrono_node/core/utils/
dates.rs

1//! upstream `utils/dates.ts`.
2
3use crate::core::components::{meridiem, Component, ParsingComponents};
4use crate::core::js_date::JsDate;
5
6/// `assignSimilarDate(component, target)`.
7pub fn assign_similar_date(component: &mut ParsingComponents, target: JsDate) {
8    component.assign(Component::Day, target.get_date());
9    component.assign(Component::Month, target.get_month() + 1);
10    component.assign(Component::Year, target.get_full_year());
11}
12
13/// `assignSimilarTime(component, target)`.
14pub fn assign_similar_time(component: &mut ParsingComponents, target: JsDate) {
15    component.assign(Component::Hour, target.get_hours());
16    component.assign(Component::Minute, target.get_minutes());
17    component.assign(Component::Second, target.get_seconds());
18    component.assign(Component::Millisecond, target.get_milliseconds());
19    component.assign(
20        Component::Meridiem,
21        if target.get_hours() < 12 {
22            meridiem::AM
23        } else {
24            meridiem::PM
25        },
26    );
27}
28
29/// `implySimilarDate(component, target)`.
30pub fn imply_similar_date(component: &mut ParsingComponents, target: JsDate) {
31    component.imply(Component::Day, target.get_date());
32    component.imply(Component::Month, target.get_month() + 1);
33    component.imply(Component::Year, target.get_full_year());
34}
35
36/// `implySimilarTime(component, target)`.
37pub fn imply_similar_time(component: &mut ParsingComponents, target: JsDate) {
38    component.imply(Component::Hour, target.get_hours());
39    component.imply(Component::Minute, target.get_minutes());
40    component.imply(Component::Second, target.get_seconds());
41    component.imply(Component::Millisecond, target.get_milliseconds());
42    component.imply(
43        Component::Meridiem,
44        if target.get_hours() < 12 {
45            meridiem::AM
46        } else {
47            meridiem::PM
48        },
49    );
50}